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