프로그래머스. Level 3. 베스트앨범 파이썬 풀이
문제링크 https://programmers.co.kr/learn/courses/30/lessons/42579
from collections import defaultdict
def solution(genres, plays):
answer = []
# 장르의 재생시간을 저장하기 위해 defaultdic 사용
# 굳이 defaultdict을 사용할 필요는 없다
dic = defaultdict(int)
# 장르, 재생시간, 고유번호를 저장할 배열
array = []
for i in range(len(genres)):
# 장르의 재생시간을 더해준다
dic[genres[i]] += plays[i]
# array 배열에 [장르, 재생시간, 고유번호]를 저장
array.append([genres[i], plays[i], i])
# 장르의 재생시간을 기준으로 내림차순으로 정렬
sdic = sorted(dic.items(), key=lambda x:x[1], reverse=True)
# [장르, 재생시간, 고유번호가] 들어있는 배열을 정렬
array = sorted(array, key=lambda x : (x[0], -x[1], x[2]))
for i in range(len(sdic)):
# 최대 두개씩만 앨범에 들어갈 수 있으니 카운트
count = 2
for j in range(len(array)):
if sdic[i][0] == array[j][0] and count != 0:
answer.append(array[j][2])
count -= 1
return answer