Algorithm/Python

[해시] 베스트앨범

🥭맹2 2021. 5. 1. 02:02

1. 문제

programmers.co.kr/learn/courses/30/lessons/42579

 

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

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

programmers.co.kr

2. 접근 방법

해시

3. 코드

python

def solution(genres, plays):
    answer = []
    genres_idx = {}
    genres_cnt = {}
    for i in range(len(genres)):
        if genres[i] in genres_cnt.keys():
            genres_cnt[genres[i]] += plays[i]
            genres_idx[genres[i]].append([plays[i], i])
        else:
            genres_cnt[genres[i]] = plays[i]
            genres_idx[genres[i]] = [[plays[i], i]]
    genres_cnt = sorted(genres_cnt.items(), key=lambda x: x[1], reverse=True)
    for key in genres_idx.keys():
        genres_idx[key].sort(reverse=True, key=lambda x: (x[0], -x[1]))
    for genre, genre_cnt in genres_cnt:
        for i in range(min(2, len(genres_idx[genre]))):
            answer.append(genres_idx[genre][i][1])
    return answer

4. 마치며

두 개를 만들었는데, 한 개로도 만든 사람들이 있었다 8ㅅ8 씐기

'Algorithm > Python' 카테고리의 다른 글

[백준 9613] GCD 합  (0) 2021.05.02
[스택/큐] 다리를 지나는 트럭  (0) 2021.05.02
[해시] 위장  (0) 2021.05.01
[해시] 전화번호 목록  (0) 2021.04.30
[해시] 완주하지 못한 선수  (0) 2021.04.30