목차

베스트앨범

ps
링크programmers.co.kr/…
출처프로그래머스
문제 번호42579
문제명베스트앨범
레벨Level 3
분류

구현

시간복잡도O(n+mlogm)
인풋사이즈m<=100, n<=10,000
사용한 언어Python
해결날짜2021/05/18
태그

고득점 Kit - 해시

풀이

코드

"""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