• Counter로 입력받은 원소가 몇 번 등장하는지 세어준다.
  • count.items() 즉, key값을 기준으로 내림차순 정렬한다. (리스트 안 튜플 형태로 저장됨)
  • 가장 큰 수가 두 개 이상 존재한다면 '큰 수 * M(총 수)'가 답이 된다. (서로 다른 인덱스에 같은 수가 저장되면 값이 같아도 서로 다른 것으로 간주하기 때문 -> 이 부분은 책의 풀이에서 놓치고 있다)
  • 가장 큰 수가 한 번 등장하면 큰 수와 다음으로 큰 수가 번갈아가며 더해져야 한다.
    • 두 번째 큰 수의 등장 순서는 n%(K+1)로 구한다.

 

from collections import Counter

N, M, K = map(int, input().split())
A = list(map(int, input().split()))
count = Counter(A)
count = sorted(count.items(), reverse=True)

answer = 0

if(count[0][1] > 1):
    answer += count[0][0] * M
else:
    n = 1
    while(n <= M):
        if (n%(K+1) != 0):
            answer += count[0][0]
        else:
            answer += count[1][0]
        n += 1

print(answer)

 

 

 

+ Recent posts