[프로그래머스/파이썬] 해시 베스트앨범

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


알고리즘 분류

  • 해시

문제풀이

sum_array는 array의 각 장르별 재생횟수 총합을 저장하는데 가장 총합이 큰 장르 순서대로 정렬해준다.

그리고 각 장르별로 재생횟수 내림차순으로 정렬하면서 재생횟수가 같은 경우 고유 번호가 낮은 노래를 먼저 수록해야 하므로 고유번호는 오름차순으로 정렬한다.

소스코드

def solution(genres, plays):
    set_genr=set(genres)
    array={i:[] for i in set_genr}
    sum_array={i:0 for i in set_genr}

    for i in range(len(plays)):
        array[genres[i]].append((plays[i],i))
        sum_array[genres[i]]+=plays[i]
    
    sum_array=sorted(sum_array.items(), key=lambda x: x[1], reverse=True)

    for i in range(len(sum_array)):
        kinds=sum_array[i][0]
        array[kinds].sort(key=lambda x: (-x[0], x[1]))

    result=[]
    for i in range(len(sum_array)):
        for j in range(2):
            result.append(array[sum_array[i][0]][j][1])
            if len(array[sum_array[i][0]])==1:
                break
                
    return result

좋은 웹페이지 즐겨찾기