보물창고 블로그

프로그래머스 베스트엘범 풀이 With Python 본문

알고리즘 풀이/프로그래머스

프로그래머스 베스트엘범 풀이 With Python

홋 메 2022. 2. 12. 21:08
728x90

문제 링크: https://programmers.co.kr/learn/courses/30/lessons/42579

 

코딩테스트 연습 - 베스트앨범

스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가

programmers.co.kr

파이썬 자료구조인 Dictionary를 사용하여 장르별 재생 횟수와 장르내에서 각 노래별 재생 횟수를 Dictionary key, value 값으로 저장하여 가장 재생 횟수가 많은 장르 순서로, 장르 내에서는 재생 횟수가 높은 노래 순서로 2개 혹은 1개씩 answer 리스트에 담아서 답을 구합니다. 소스코드는 아래와 같습니다.

def solution(genres, plays):
    answer = []
    from collections import defaultdict
    l = len(genres)
    genrecount = defaultdict(int)
    music = defaultdict(list)
    for g in range(l):
        genrecount[genres[g]] += plays[g]
        music[genres[g]].append((g, plays[g]))
    gen = list(genrecount.items())
    gen.sort(key= lambda x: x[1], reverse=True)
    for g in gen:
        if len(music[g[0]]) == 1:
            answer.append(music[g[0]][0][0])
        else:
            music[g[0]].sort(key=lambda x: x[1], reverse=True)
            answer.append(music[g[0]][0][0])
            answer.append(music[g[0]][1][0])
    return answer

 소스코드에 대한 질문이 있으시면 댓글 남겨주시면 답변드리겠습니다. :-)

Comments