프로그래머스 - 베스트앨범
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/42579
- 장르 별 순위
- 장르 내 곡 순위
- 케이스를 나누어 정렬을 해주면 가능하다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
def solution(genres, plays):
answer = []
infos = dict()
# 1. init
for i, (genre, play) in enumerate(zip(genres, plays)):
temp = infos.get(genre, list())
temp.append((i, play))
infos[genre] = temp
# 2. 장르 순위
jenre_rank = sorted( [(key, sum(map(lambda x:x[1], infos[key]))) for key in infos], key = lambda x:-x[1] )
# 3. 장르 순위 별 TOP2
# 한개 일 때 예외 처리
for jenre, _ in jenre_rank:
temp = sorted(infos[jenre], key= lambda x:-x[1])
answer.append(temp[0][0])
if len(temp) == 1:
continue
answer.append(temp[1][0])
return answer