링크 : 프로그래머스 - 해시 > 베스트앨범
def solution(genres, plays):
answer = []
genre = dict() # 장르별 재생된 총 횟수
dic = dict() # 장르별 [재생수, 고유번호]
music = list(zip(genres, plays, range(len(genres)))) # 장르, 재생수, 고유번호
for key, value, idx in music:
dic[key] = dic.get(key, []) + [[value, idx]]
genre[key] = genre.get(key, 0) + value
for key, value in dic.items():
dic[key] = sorted(value, key=lambda x: [-x[0], x[1]])
genre = sorted(genre.items(), key= lambda x: x[1], reverse=True)
for g in genre:
answer.extend(dic[g[0]][:2])
return [i[1] for i in answer]
-
를 붙이면 내림차순이 된다. x[0]인 재생수는 내림차순, x[1]인 고유번호는 오름차순으로 정렬한다. 정렬은 재생수를 기준으로 하되 재생수가 같을경우 고유번호를 비교한다.