본문 바로가기
Algorithm/프로그래머스

[프로그래머스] 베스트앨범(level 3) Python 문제 풀이

by daewooki 2021. 7. 30.
반응형

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

 

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

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

programmers.co.kr

 

문제

 

문제 풀이 코드

from collections import defaultdict
def solution(genres, plays):
    # 0으로 초기화
    play_cnt_by_genre = defaultdict(int)
    # empty list로 초기화
    songs_in_genre = defaultdict(list)
    
    for song_id, genre, play in zip(counter(), genres, plays):
        play_cnt_by_genre[genre]+=play
        songs_in_genre[genre].append((-play, song_id))
    print(play_cnt_by_genre)
    print(songs_in_genre)
    
    genre_in_order = sorted(play_cnt_by_genre.keys(), key=lambda g:play_cnt_by_genre[g], reverse=True)
    
    print(genre_in_order)
    
    answer = []
    for genre in genre_in_order:
        print(genre)
        answer.extend([song_id for play, song_id in sorted(songs_in_genre[genre])[:2]])
    return answer


def counter():
    i=0
    while True:
        yield i
        i+=1
반응형

댓글