다양한 수로 이루어진 배열이 있을 때, 주어진 수들을 M번 더하여 가장 큰 수를 만든다.
단, 배열의 특정한 인덱스에 해당하는 수가 연속해서 K번을 초과해서 더해질 수 없다.
#N M K
n, m, k = map(int, input().split())
#N개의 수
nums = list(map(int, input().split()))
#큰 순서대로 정렬하기
nums.sort(reverse=True)
max1 = nums[0]
max2 = nums[1]
cnt = 1
result = max1
#더하기
while cnt < m:
if cnt%k != 0:
result += max1
cnt += 1
elif cnt%k == 0:
result += max2
cnt += 1
print(result)
가장 큰 수와 두번째로 큰 수 두 가지만 있으면 된다.
가장 큰 수를 세번씩 쓰고, 두번째로 큰 수를 한 번 쓰고 다시 가장 큰 수를 세번씩 쓰고 하는 방식으로 가장 큰 수를 만들 수 있다.
'Algorithm > Programmers' 카테고리의 다른 글
[그리디] 곱하기 혹은 더하기 (파이썬) (0) | 2022.07.16 |
---|---|
[그리디] 모험가 길드 (파이썬) (0) | 2022.07.16 |
[그리디] 1이 될 때까지 (파이썬) (0) | 2022.07.16 |
[그리디] 숫자 카드 게임 (파이썬) (0) | 2022.07.16 |
[그리디] 거스름돈 (파이썬) (0) | 2022.07.16 |