Programmers - 42579. 베스트앨범
접근
우선, set으로 장르의 종류를 파악(중복 제거)
dictionary를 이용해 장르별 플레이 횟수, 장르별 index와 index에 따른 play 횟수를 sub-dictionary로 저장.
{'classic': 1450, 'pop': 3100}
{'classic': {0: 500, 2: 150, 3: 800}, 'pop': {1: 600, 4: 2500}}
같은 느낌으로.
그리고 총 play수가 가장 많은 장르부터,
곡의 play수가 가장 많은 2개를 뽑아 차례대로 저장시킴.
** 단, play수가 같은 곡은 index가 빠른 순서대로 저장. << 유의
def solution(genres, plays):
numOfgenre = set(genres)
playBygenre = {}
indexOfgenre = {}
for i in range(len(genres)):
gen = genres[i]
play = plays[i]
if gen in playBygenre:
playBygenre[gen] += play
indexOfgenre[gen].append([i, play])
else:
playBygenre[gen] = play
indexOfgenre[gen] = [[i, play]]
answer = []
for _ in range(len(numOfgenre)):
target = max(playBygenre, key=playBygenre.get)
subindex = indexOfgenre[target]
if len(indexOfgenre[target]) == 1:
answer.append(subindex[0][0])
else:
subindex.sort(key=lambda x: (-x[1], x[0]))
answer.append(subindex[0][0])
answer.append(subindex[1][0])
del playBygenre[target]
return answer