https://school.programmers.co.kr/learn/courses/30/lessons/42579
"""
"""
def solution(genres, plays):
n = len(genres)
genre_dict = dict()
answer = []
for i in range(n): # 노래 장르와 플레이 수 딕셔너리로 정리
if genres[i] in genre_dict:
genre_dict[genres[i]].append((i, plays[i]))
else:
genre_dict[genres[i]] = [(i, plays[i])]
genre_rank = dict()
for genre in genre_dict.keys(): # 플레이 수의 합을 장르별로 정리
songs = genre_dict[genre]
play_sum = 0
for song in songs:
play_sum += song[1]
genre_rank[genre] = play_sum
genre_rank = sorted(genre_rank.items(), key=lambda x:x[1], reverse=True) # 플레이 수의 합이 큰 순서대로 정렬
for genre in genre_rank: # 주어진 조건에 따라 최대 2개의 노래의 고유번호를 출력
song_rank = sorted(genre_dict[genre[0]], key=lambda x : (x[1], -x[0]), reverse=True) # ★플레이 수로 내림차순 후 고유번호 순으로 오름차순★
for num, cnt in song_rank[:2]:
answer.append(num)
return answer
해시 문제
lambda를 이용한 정렬방법 배울 수 있음