티스토리 뷰
반응형
# 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)
반응형
'Algorithm' 카테고리의 다른 글
유클리드 호제법을 이용한 두 수의 최대공약수 구하기 (1) | 2023.12.25 |
---|---|
[프로그래머스] 게임 맵 최단거리 (1) | 2023.08.04 |
[문제] 숫자 카드 게임 (0) | 2023.04.19 |
[문제] 1이 될 때까지 (0) | 2023.04.19 |
Greedy Algorithm (0) | 2023.04.02 |
댓글