코딩테스트 연습 - 베스트앨범
스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가
programmers.co.kr
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
from collections import defaultdict
def solution(genres, plays):
answer = []
d = defaultdict(list)
p = defaultdict(lambda: [0, 0])
for i in range(len(genres)):
d[genres[i]].append((i, plays[i]))
# print(d) # {'classic': [(0, 500), (2, 150), (3, 800)], 'pop': [(1, 600), (4, 2500)]})
# [장르의 수, 장르의 총 재생횟수]
for i, j in zip(genres, plays):
p[i][0] += 1
p[i][1] += j
a = sorted(p.items(), key=lambda x: -x[1][1])
prior = []
for i in a:
prior.append(i[0])
# print(prior) # ['pop', 'classic']
for i in prior:
temp = list(d[i])
s = sorted(temp, key=lambda x: -x[1])
if len(s) >= 2:
answer.append(s[0][0])
answer.append(s[1][0])
else:
answer.append(s[0][0])
return answer
g = ["classic", "pop", "classic", "classic", "pop"]
p = [500, 600, 150, 800, 2500]
print(solution(g, p))
|
cs |
'알고리즘 문제풀이 with 파이썬 > 프로그래머스' 카테고리의 다른 글
[완전탐색] 카펫 (0) | 2021.10.09 |
---|---|
[정렬] H_Index (0) | 2021.10.09 |
[해시] 위장 (0) | 2021.10.04 |
[스택] 주식 가격 (0) | 2021.10.02 |
[큐] 다리를 지나는 트럭 (0) | 2021.10.02 |