PS

[문제] 큰 수의 법칙

daehwi 2023. 4. 19. 18:17
반응형

 

# 2023.04.16
# n개의 수가 들어있는 배열에서, 주어진 수를 m번 골라 가장 큰 수를 만들어보자.
# 단, 같은 수를 k번을 초과하여 연속으로 더할 수 없다고 가정한다.

n, m, k = map(int,input().split())
nums = list(map(int,input().split()))
nums.sort()
result = 0
iter = 0
for i in range(m):
    if(iter<3):
        result+=nums[-1]
        iter+=1
    else:
        result+=nums[-2]
        iter = 0
print(result)

# 이를 수학적인 방법을 이용하여 더 간단하게 해결할 수 있다.
sumOfpattern = nums[-1]*k + nums[-2] # 반복되는 패턴의 합 (가장 큰 수 * k번 + 두 번째로 큰 수)
result2 = m//(k+1)*sumOfpattern + m%(k+1)*nums[-1] # 반복문을 수식으로 처리
print(result2)
반응형