배열의 크기 N
숫자가 더해지는 횟수 M
배열의 특정한 인덱스에 해당하는 수가 연속해서 K번까지만 더해질 수 있음
n, m, k = map(int, input().split())
data = list(map(int, input().split()))
data.sort() # 정렬 함수는 작은 순서대로 정렬된다.
first = data[-1] # 제일 큰 숫자는 제일 뒤에 위치함
second = data[-2] # 두 번째로 큰 숫자는 끝에서 두 번째에 위치.
sum = 0
for i in range(0, m, k+1):
for j in range(k):
sum += first
sum += second
print(sum)
first
)가 K번 더해지고 두 번째로 큰 수(second
)가 1번 더해지는 형식이 반복된다.first * K + second
따라서 반복되는 수열의 길이는 K+1
이 된다.M / (K+1)
의 몫이 된다. * K
하면 제일 큰 수가 반복되는 횟수가 된다.M / (K+1)
의 나머지가 존재할 때는 그 만큼 제일 큰 수가 더 반복되는 것을 잊지 말아야 한다.int(M /(K+1)) * K + M % (K+1)
n, m, k = map(int, input().split())
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)