- 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)
'◦ Algorithm > Python' 카테고리의 다른 글
이코테 그리디 1이 될 때까지 (0) | 2023.03.22 |
---|---|
이코테 그리디 숫자 카드 게임 (0) | 2023.03.22 |
이코테 부록 정리 - 내장함수 (0) | 2023.03.22 |
이코테 부록 정리 - 함수 (0) | 2023.03.22 |
이코테 부록 정리 - 반복문 (0) | 2023.03.22 |