💻 입력 조건
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]
profile
AI를 공부하고 있는 학생입니다:)

0개의 댓글