입출력 예 설명
-classic 장르는 1,450회 재생되었으며, classic 노래는 다음과 같습니다.
-고유 번호 3: 800회 재생
-고유 번호 0: 500회 재생
-고유 번호 2: 150회 재생
-pop 장르는 3,100회 재생되었으며, pop 노래는 다음과 같습니다.
-고유 번호 4: 2,500회 재생
-고유 번호 1: 600회 재생
따라서 pop 장르의 [4, 1]번 노래를 먼저, classic 장르의 [3, 0]번 노래를 그다음에 수록합니다.
접근법
하나의 딕셔너리를 선언한 뒤에, 입력받은 장르들에 대한 정보를 하나로 합쳐줍니다. 저는 {'장르': [재생 횟수, [0번곡: 0번곡 재생횟수], [n번곡: n번곡 재생 횟수],...]}로 정보를 저장 한 뒤, 정렬시켜주고, 각 장르당 두 곡씩 뽑아 answer 리스트에 추가해주었습니다!
나의 코드
import operator
def solution(genres, plays):
answer = []
genre_lank = dict()
for index, genre_list in enumerate(zip(genres,plays)):
if genre_list[0] in genre_lank:
genre_lank[genre_list[0]][0] += genre_list[1]
genre_lank[genre_list[0]].append([index,genre_list[1]])
else:
genre_lank[genre_list[0]] = [genre_list[1]]
genre_lank[genre_list[0]].append([index,genre_list[1]])
genre_lank = sorted(genre_lank.items(), key=operator.itemgetter(1), reverse=True)
for genre in genre_lank:
genre_list = genre[1][1:]
genre_list.sort(key=operator.itemgetter(1), reverse=True)
if len(genre_list) < 2: answer.append(genre_list[0][0])
else:
for i in range(2):
answer.append(genre_list[i][0])
return answer