취준/프로그래머스
[프로그래머스 Programmers][Python] 베스트앨범
puff
2020. 1. 22. 20:36
문제 : https://programmers.co.kr/learn/courses/30/lessons/42579
이 문제는 간단한 문제다.
우선 genres, plays 를 쌍으로 묶어 dictionary에 넣는다. 이제 d[장르] = [플레이수1 , 플레이수 2,...] 가 된다.
그 다음에 dictionary 에 넣은걸 (키, sum(플레이수) ) 로 한뒤, 플레이수 에 따라 정렬한다.
이제 내가 귀찮아서 한건데, heapq에다가 넣어버리고, nlargest로 2개씩 묶어서 뽑는데, 조건은 플레이 횟수고,뽑는 값은 음악의 index다. 이걸 뽑아서 answer에 넣고 반환한다.
import heapq
def solution(genres, plays):
answer = []
d = dict()
for i in range(len(genres)):
if genres[i] not in d:
d[genres[i]] = [ (plays[i],i)]
else:
d[genres[i]].append((plays[i],i))
sumlist = []
for i in d.keys():
sumlist.append((i,sum([k[0] for k in d[i]])))
sumlist = sorted(sumlist, key=lambda k:k[1])
for l in reversed(sumlist):
for q in [i[1] for i in heapq.nlargest(2,d[l[0]],key=lambda idx : (idx[0],-idx[1]))]:
answer.append(q)
return answer