책 풀이
N,M,K = map(int,input().split())
data = list(map(int,input().split()))
data.sort()
first = data[N-1]
second = data[N-2]
result = 0
while True:
for i in range(K):
if M == 0:
break
result += first
M -= 1
if M == 0:
break
result += second
M -=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) # 최종 답안 출력
나의 풀이
n,m,k = map(int, input().split())
array = list(map(int, input().split()))
array.sort(reverse=True)
sum = 0
for i in range(1, m+1):
if i%k == 0:
sum += array[1]
else:
sum += array[0]
print(sum)
'알고리즘 > 1. 그리디' 카테고리의 다른 글
#11399 ATM (0) | 2023.01.11 |
---|---|
#1931 회의실 배정 (0) | 2023.01.07 |
#11047 동전 0 (0) | 2023.01.05 |
[그리디] 1이 될 때까지 (0) | 2023.01.05 |
[그리디] 숫자 카드 게임 (0) | 2023.01.05 |