Development/Algorithm

[이코테 2021] 3장 그리디 [실전문제] 큰 수의 법칙

jstar0525 2022. 4. 23. 21:41
반응형

나의 풀이

n, m, k = map(int, input().split())

arr = list(map(int, input().split()))

arr.sort(reverse=True)

num = m // (k+1)

result = (arr[0]*k + arr[1])*num + arr[0]*(m%(k+1))

print(result)

답안 예시

# N, M, K를 공백을 기준으로 구분하여 입력 받기
n, m, k = map(int, input().split())
# N개의 수를 공백을 기준으로 구분하여 입력 받기
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) # 최종 답안 출력

 

반응형