티스토리 뷰
반응형

 

# 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)
반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함