

from collections import defaultdict
def solution(genres, plays):
answer = []
genre_dict = defaultdict(int)
music_dict = defaultdict(list)
for i in range(len(genres)):
g = genres[i]
p = plays[i]
music_dict[g].append((p, i))
genre_dict[g] += p
g_items = genre_dict.items() # 키값 쌍 저장하기
g_items = list(g_items)
g_items.sort(key=lambda x: -x[1]) # 등장 횟수 많은 순(내림차순) 정렬
for key in music_dict.keys():
# 재생 횟수 많은 순(내림차순), 고유 번호 낮은 순(오름차순) 정렬
music_dict[key].sort(key=lambda x: (-x[0], x[1])) # - 붙여서 내림차순으로 만들기 가능
for g, cnt in g_items:
if len(music_dict[g]) > 0:
if len(music_dict[g]) == 1:
number = music_dict[g][0][1]
answer.append(number)
else:
for i in range(2):
number = music_dict[g][i][1]
answer.append(number)
# 많이 재생된 장르 먼저, 장르 내에서 많이 재생된 노래 먼저, 재생 횟수 같은 노래중에는 고유 번호 낮은 노래 먼저
# 장르별 최대 2개씩
return answer