프로그래머스/미해결

프로그래머스 - 베스트앨범

yanJuicy 2024. 2. 10. 00:32
반응형

문제

https://school.programmers.co.kr/learn/courses/30/lessons/42579

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

풀이

장르별로 총 재생횟수를 구하고 내림차순한다.

장르명을 키로하고 총 재생횟수를 값으로 가지는 딕셔너리를 이용한다.

장르별 곡들을 정렬하기 위해서 장르명을 키로하고 (곡 id, 재생 횟수) 튜플 배열을 값으로 가지는 딕셔너리를 이용한다.

이를 통해 장르별 곡들도 재생 횟수로 내림차순 정렬이 가능하다.

정렬 후 각 장르별로 재생 횟수가 높은 2곡을 뽑는다.

 

 

코드

python

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
def solution(genres, plays):
    genres_song = {}
    genres_play = {}
    
    for i in range(len(genres)):
        if genres[i] not in genres_song:
            genres_song[genres[i]] = []
            genres_play[genres[i]] = 0
        genres_song[genres[i]].append((plays[i], i))
        genres_play[genres[i]] += plays[i]
        
    genres_play = sorted(genres_play.items(), key=lambda x:x[1], reverse=True)
 
    answer = []
    for genre, _ in genres_play:
        top2 = sorted(genres_song[genre], key=lambda x:(-x[0], x[1]))[:2]
        for _, id in top2:
            answer.append(id)        
    
    return answer
cs

 

반응형