https://school.programmers.co.kr/learn/courses/30/lessons/42579
2번 15번만 오류를 출력해서 조건문을 살펴 본 결과,
조건 중 다음 부분을 고려하지 않아 생기는 오류입니다.
- 장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록합니다.
위 케이스를 고려하여 코드를 수정 후 해결하였습니다.
테스트 케이스로는 다음을 추가하시면 됩니다.
genres : ["classic", "pop", "classic", "classic", "pop"]
plays : [800, 600, 150, 800, 2500]
answer : [4, 1, 0, 3]
위 케이스를 고려하지 않으면 [4, 1, 3, 0]이 출력 됩니다.
from collections import defaultdict
def solution(genres, plays):
answer = []
album = defaultdict(list)
album_sum = defaultdict(int)
for idx, (g, p) in enumerate(zip(genres, plays)):
album[g].append([p, idx])
album_sum[g] += p
for k, v in album.items():
album[k] = sorted(v, key=lambda x: (x[0], -x[1]))
album_sum = dict(sorted(album_sum.items(), key=lambda x: x[1]))
while len(album_sum) > 0:
k, _ = album_sum.popitem()
if len(album[k]) >= 2:
v = album[k]
answer.append(v.pop()[1])
answer.append(v.pop()[1])
else:
v = album[k]
answer.append(v.pop()[1])
return answer
'Coding Test > 프로그래머스' 카테고리의 다른 글
[프로그래머스] / [Level 2] / [Python] 귤 고르기 (0) | 2023.01.19 |
---|---|
[프로그래머스] / [Level 3] / [Python] 거스름돈 (0) | 2023.01.06 |
[프로그래머스] / [Level 2] / [Python] 순위 검색 (0) | 2022.11.05 |
[Level 2] / [Python] 숫자 블록 (0) | 2022.10.23 |
[Level 2] / [Python] N-Queen (0) | 2022.10.19 |