진박사의 일상

[프로그래머스] 해시 문제 - 베스트앨범 본문

프로그래밍/코딩테스트 공부

[프로그래머스] 해시 문제 - 베스트앨범

진박사. 2021. 9. 10. 08:04
from collections import defaultdict

def solution(genres, plays):
    answer = []
    musics = defaultdict(list)

    for i in range(len(genres)):
        musics[genres[i]].append((plays[i], i))  # (재생수,고유번호) set

    #재생수 총합을 기준으로 내림차순 정렬
    playlist_sort = sorted(list(musics.values()),
                           key=lambda x: -sum([play[0] for play in x]))
    print(playlist_sort)
    for playlist in playlist_sort:
        selected = sorted(playlist, key=lambda x: (-x[0], x[1]))[:2]  # 재생수 기준 내림차순, 고유번호 기준 오름차순
        print(selected)
        if len(selected) == 1:  # 하나 뿐이면
            answer.append(selected[0][1])
        else:
            answer.append(selected[0][1])
            answer.append(selected[1][1])

    return answer

해시 문제 마스터~