✅ 이것이 코딩 테스트다 - 큰 수의 법칙
# N M K 입력
N, M, K = map(int, input().split())
# 수열 입력
arr = list(map(int, input().split()))
# 제일 큰 수, 그 다음 수 구하기
arr_sorted = sorted(arr)
n1 = arr_sorted[-1] # first
n2 = arr_sorted[-2] # second 라고 변수명 지었어도 좋았을듯
# 카운트
cnt = M // (K + 1)
remain = M % (K + 1)
if (M % 2 == 0): # 짝수라면
ans = ((n1 * K) + n2) * cnt
print(ans)
else: # 홀수라면
ans = ((n1 * K) + n2) * cnt + (n1 * remain)
print(ans)
◾ Greedy
◾ sorted 해서 제일 큰수와 그 다음의 수를 구한다.
◾ M을 K + 1로 나눠줘서 cnt를 구하고 나중에 곱해준다.
◾ remain 값들을 처리해준다.
728x90
'✏️ 𝗔𝗹𝗴𝗼𝗿𝗶𝘁𝗵𝗺 > 이것이 코딩 테스트다' 카테고리의 다른 글
[TC0403] [구현] 왕실의 나이트 (0) | 2021.11.23 |
---|---|
[TC0402] [구현] 시각 (0) | 2021.11.21 |
[TC0301] [그리디] 거스름돈 (0) | 2021.11.16 |
[TC0401] [구현] 상하좌우 (0) | 2021.11.16 |
[TC0304] [그리디] 1이 될 때까지 (0) | 2021.10.16 |