코딩테스트 연습 - 베스트앨범

스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가

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: [00])
 
    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
 
 
= ["classic""pop""classic""classic""pop"]
= [5006001508002500]
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

+ Recent posts