다양한 수로 이루어진 배열을 M번 더하여 가장 큰 수를 만든다.

단, 배열의 특정한 인덱스에 해당하는 수가 연속해서 K번을 초과하여 더해질 수 없다.

서로 다른 인덱스에 해당하는 수가 같은 경우에도 서로 다른 것으로 간주한다.

N은 배열의 크기, M은 숫자가 더해지는 횟수, K는 연속해서 더할 수 있는 횟수.

 

  • [2, 4, 5, 4, 6] 배열, M = 8, K = 3은 6 + 6 + 6 + 5 + 6 + 6 + 6 + 5 = 46 이다.
  • [3, 4, 3, 4, 3] 배열, M = 7, K = 2은 4 + 4 + 4 + 4 + 4 + 4 + 4 = 28

입력 조건

  • 첫번째 줄에 N (2 <= N <= 1000), M (1 <= M <= 10000), K (1 <= K <= 10000)의 자연수가 주어지며, 각 자연수는 공백으로 구분한다.
  • 둘째 줄에 N개의 자연수가 주어진다. 각 자연수는 공백으로 구분하며 1 이상 10000 이하의 수로 주어진다.
  • 입력으로 주어지는 K는 항상 M보다 작거나 같다.

 


2 4 3 5 6

M = 8 K = 3

일 경우

 

6 6 6 5

+

6 6 6 5

 

가 최선이다.

즉 일정한 규칙을 갖고 반복되는 점을 인지해야 한다.

 


N ,M ,K = list(map(int,input().split()))
data = list(map(int,input().split()))
data.sort(reverse=True)
count = (M//(K+1)) * K
count += M % (K+1)

MAX = count * data[0]
MAX += (M - count) * data[1]

print(MAX)

'프로그래밍 > 파이썬' 카테고리의 다른 글

#파이썬 - 기본문법정리[1]  (0) 2022.04.04
#파이썬 - 기본문법정리[0]  (0) 2022.04.04
* 백준 || 10870 피보나치 수 5  (0) 2022.02.09
*코드업 || 6104  (0) 2022.02.09
*코드업 || 6103  (0) 2022.02.09

+ Recent posts