Kimuksung
Kimuksung 안녕하세요. 분산처리에 관심이 많은 생각하는 주니어 Data Enginner입니다.

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

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

  • 장르 별 순위
  • 장르 내 곡 순위
  • 케이스를 나누어 정렬을 해주면 가능하다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
def solution(genres, plays):
    answer = []
    
    infos = dict()
    # 1. init
    for i, (genre, play) in enumerate(zip(genres, plays)):
        temp = infos.get(genre, list())
        temp.append((i, play))
        infos[genre] = temp
    
    # 2. 장르 순위
    jenre_rank = sorted( [(key, sum(map(lambda x:x[1], infos[key]))) for key in infos], key = lambda x:-x[1] )
    
    # 3. 장르 순위 별 TOP2
    # 한개 일 때 예외 처리
    for jenre, _ in jenre_rank:
        temp = sorted(infos[jenre], key= lambda x:-x[1])
        answer.append(temp[0][0])
        if len(temp) == 1:
            continue
        answer.append(temp[1][0])
            
    return answer