💻 입력 조건
1. 첫째 줄에 N(2<= N <= 1,000), M(1<= M <=10,000), K(1<= K <= 10,000)의 자연수가 주어지며 각 자연수는 공백으로 구분한다.
2. 둘째 줄에 N개의 자연수가 주어진다. 각 자연수는 공백으로 구분한다. 단, 각각의 자연수는 1 이상 10,000 이하의 수로 주어진다.
3. 입력으로 주어지는 K는 항상 M보다 작거나 같다.
💻 출력 조건
💻 입력 예시
5 8 3
2 4 5 4 6
💻 출력 예시
46
📖 문제 해결
큰 수의 법칙 문제는 전형적인 그리디 알고리즘 문제로, 중첩 while문을 이용하여 문제를 해결하였습니다. while문의 조건에는 입력받은 M과 K를 이용하였습니다. 구체적으로는 가장 큰 수를 K번까지 더하고, 그다음으로 큰 수를 한 번 더하는 것을 반복하되 더하는 횟수가 M번이 되도록 코드를 작성하였습니다.
# 첫 번째 줄 입력
nmk = list(map(int,input().split()))
# 두 번째 줄 입력
data_list = list(map(int,input().split()))
data_list.sort()
answer = 0
m_count = 0
while m_count < nmk[1]:
k_count = 0
K = nmk[2]
while k_count < K:
m_count += 1
k_count += 1
answer += data_list[-1]
m_count += 1
answer += data_list[-2]