알고리즘

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

ghtis1798 2021. 9. 7. 19:23

프로그래머스 해시 - 베스트앨범

image

1. 문제유형

  • hashmap

2. 해결과정

1.⭐가장 많이 재생된 장르 순서를 구한다.
2. 장르별 인덱스, 재생횟수를 저장한 딕셔너리를 구한다.
3.⭐2번에서 구한 딕셔너리를 재생횟수를 기준으로 정렬한다.
4. 1번에서 구한 장르별 순서대로 3번에서 구한 인덱스를 2개씩 꺼낸다.

3. 소스코드

from collections import defaultdict

def solution(genres, plays):
    answer = []
    gdict = defaultdict(int)
    pdict = defaultdict(list)

    for genre,play in zip(genres, plays):
        gdict[genre]+=play
    gdict = sorted(gdict.items(), key=lambda x: x[1], reverse=True)
    gdict = [genre for genre, plays in gdict]

    for i in range(len(genres)):
        pdict[genres[i]].append([i, plays[i]])

    for i in range(len(genres)):
        pdict[genres[i]] = sorted(pdict[genres[i]], key=lambda x: x[1], reverse=True)

    for genre in gdict:
        tmp = pdict[genre][:2]
        for idx, plays in tmp:
            answer.append(idx)

    return answer

4. 노트필기

image