[프로그래머스] 해시 Level3 베스트앨범

최대 1 분 소요

문제

노래의 장르를 나타내는 문자열 배열 genres와 노래별 재생 횟수를 나타내는 정수 배열 plays가 주어질 때, 베스트 앨범에 들어갈 노래의 고유 번호를 순서대로 return 하도록 구현하라.

어떻게 풀 것인가?

사전 자료형을 사용한다.

def solution(genres, plays):
    answer = []
    genres_set = set(genres)
    data = dict()  # 키: 노래의 장르, 값: 속한 노래의 재생 횟수
    for s in genres_set:
        tmp = []
        for i in range(len(genres)):    
            if s == genres[i]:
                tmp.append(plays[i])
        data[s] = sum(tmp)
    
    # 키를 기준으로 내림차순 정렬
    data_val_reverse = sorted(data.items(), reverse=True, key=lambda item: item[1])

    for key, value in data_val_reverse:
        data2 = dict()   # 키: 고유 번호, 값: 노래가 재생된 횟수
        for i in range(len(genres)):
            if key == genres[i]:
                data2[i] = plays[i]
        
        # 키를 기준으로 내림차순 정렬
        data_val_reverse2 = sorted(data2.items(), reverse=True, key=lambda item: item[1])        
        
        cnt = 0
        for key2, value2 in data_val_reverse2:
            answer.append(key2)
            cnt += 1
            if cnt == 2:
                break
        
    return answer

카테고리:

업데이트:

댓글남기기