[プログラマー/python]Hash Bestアルバム



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