문제

해결 방법
해쉬로 많이 재생된 장르를 찾아낸 후 다시 해쉬로 각 장르별 인덱스와 재생횟수를 저장한다.
그 후 많이 재생된 장르순으로 인덱스와 재생횟수를 저장 한 후 인덱스만 꺼내 두 개 씩만 뽑아낸다.
genres = ["classic", "pop", "classic", "classic", "pop"]
plays = [500, 600, 150, 800, 2500]
def get_melon_best_album(genre_array, play_array):
n = len(genre_array)
genre_total_play_dict = {}
genre_index_play_array = {}
for i in range(n):
# 해쉬로 값을 저장하기 위해 장르와 재생횟수를 꺼낸다.
genre = genre_array[i]
play = play_array[i]
# 각 장르별 총 재생횟수를 해쉬로 저장하고, 인덱스와 재생횟수 또한 장르별로 해쉬로 저장
if genre not in genre_total_play_dict:
genre_total_play_dict[genre] = play
genre_index_play_array[genre] = [[i,play]]
else:
genre_total_play_dict[genre] += play
genre_index_play_array[genre].append([i,play])
# 장르의 재생횟수 순대로 값을 뽑아내기위해 재생횟수를 내림차순으로 정렬
sorted_genre_play_array = sorted(genre_total_play_dict.items(),key=lambda item:item[1],reverse=True)
result = []
# 많이 재생된 장르 순대로 인덱스와 재생횟수를 꺼내 새로운 배열에 저장 후 재생횟수 내림차순 정렬
for genre,key in sorted_genre_play_array:
index_play_array = genre_index_play_array[genre]
sorted_index_play_array = sorted(index_play_array,key=lambda item:item[1],reverse=True)
# 내림차순 정렬된 재생횟수와 배열에서 인덱스번호만 꺼내고, 두 개 이상 출력될 경우 break
for i in range(len(sorted_index_play_array)):
if i > 1:
break
result.append(sorted_index_play_array[i][0])
return result
print(get_melon_best_album(genres, plays)) # 결과로 [4, 1, 3, 0] 가 와야 합니다!