본문 바로가기
Algorithm/Programmers

[그리디] 큰 수의 법칙 (파이썬)

by 그랴 2022. 7. 16.

다양한 수로 이루어진 배열이 있을 때, 주어진 수들을 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)

가장 큰 수와 두번째로 큰 수 두 가지만 있으면 된다.

가장 큰 수를 세번씩 쓰고, 두번째로 큰 수를 한 번 쓰고 다시 가장 큰 수를 세번씩 쓰고 하는 방식으로 가장 큰 수를 만들 수 있다.