문제풀기/프로그래머스
프로그래머스 베스트 앨범
Csprout
2021. 10. 12. 19:03
https://programmers.co.kr/learn/courses/30/lessons/42579
코딩테스트 연습 - 베스트앨범
스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가
programmers.co.kr
파이썬의 heapq는 최소 힙이기 때문에 정렬에 사용할 값에 마이너스를 붙여주면 최대 힙으로 활용할 수 있다.
import heapq
def solution(genres, plays):
answer = []
genre_array = dict()
genre_total = []
for i in range(len(genres)):
if genres[i] not in genre_array:
genre_array[genres[i]] = []
heapq.heappush(genre_array[genres[i]], (-plays[i], i))
for g in genre_array:
total = 0
for p,i in genre_array[g]:
total += p
heapq.heappush(genre_total,(total,g))
while genre_total:
total, now_genre = heapq.heappop(genre_total)
for _ in range(2):
if genre_array[now_genre]:
p,i = heapq.heappop(genre_array[now_genre])
answer.append(i)
return answer