가오리의 코딩일기

큰 수의 법칙 본문

Python/이코테

큰 수의 법칙

류경혜 2022. 5. 24. 16:00

POINT

- sort() : 오름차순 정렬 → first = numbers[n-1], second = numbers[n-2]

- sort(reverse = True) : 내림차순 정렬 → first = numbers[0], second = numbers[1]

- 가장 큰 수를 k번 더하고 두 번째로 큰 수를 1번 더하고 가장 큰 수를 k번 더하기를 반복

# 방법1 -> 내생각1 sort() 사용
n, m, k = map(int, input().split())
numbers = list(map(int, input().split()))
numbers.sort()  
result = 0
while True:
    for i in range(k):
        if m == 0:
            break  
        result += numbers[n-1] 
        m -= 1
    if m == 0:
        break 
    result += numbers[n-2]
    m -= 1
print(result)

 

 

# 방법2 -> 내생각2 sort(reverse=True) 사용
n, m, k = map(int, input().split())
numbers = list(map(int, input().split()))
numbers.sort(reverse=True)  
result = 0
while True:
    for i in range(k):
        if m == 0:
            break  
        result += numbers[0] 
        m -= 1
    if m == 0:
        break 
    result += numbers[1]
    m -= 1
print(result)​

 

# 방법2 -> 책
n, m, k = map(int, input().split())
data = list(map(int, input().split()))
data.sort()
first = data[n-1]
second = data[n-2]
count = int(m/(k+1))*k
count += m % (k+1)
result = 0
result += (count) * first
result += (m-count) * second
print(result)

'Python > 이코테' 카테고리의 다른 글

곱하기 혹은 더하기  (0) 2022.05.26
모험가 길드  (0) 2022.05.26
1이 될 때까지  (0) 2022.05.25
숫자 카드 게임  (0) 2022.05.25
거스름돈  (0) 2022.05.23