| ps | |
|---|---|
| 링크 | programmers.co.kr/… |
| 출처 | 프로그래머스 |
| 문제 번호 | 42579 |
| 문제명 | 베스트앨범 |
| 레벨 | Level 3 |
| 분류 |
구현 |
| 시간복잡도 | O(n+mlogm) |
| 인풋사이즈 | m<=100, n<=10,000 |
| 사용한 언어 | Python |
| 해결날짜 | 2021/05/18 |
| 태그 | |
"""Solution code for "Programmers 42579. 베스트앨범".
- Problem link: https://programmers.co.kr/learn/courses/30/lessons/42579
- Solution link: http://www.teferi.net/ps/problems/programmers/42579
"""
import collections
def solution(genres, plays):
songs_by_genre = collections.defaultdict(list)
for song, genre in enumerate(genres):
songs_by_genre[genre].append(song)
answer = []
for songs in sorted(songs_by_genre.values(),
key=lambda songs: -sum(plays[song] for song in songs)):
answer.append(max(songs, key=lambda song: plays[song]))
if len(songs) > 1:
plays[answer[-1]] = -1
answer.append(max(songs, key=lambda song: plays[song]))
return answer