반응형
문제 링크: 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
반응형
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 가장 큰 수(level 2) 파이썬 문제 풀이 (2) | 2021.08.27 |
---|---|
[프로그래머스] 모의고사(level 1) 파이썬 문제 풀이 (0) | 2021.08.23 |
[프로그래머스] K번째수(level 1) Python 문제 풀이 (0) | 2021.07.17 |
[프로그래머스] 프린터 (level 2) Python 문제 풀이 (2) | 2021.06.26 |
[프로그래머스] 기능개발 (level 2) Python 문제 풀이 (0) | 2021.06.25 |
댓글