input
genres, plays
(begin, target).len ≤ 10,000output
genre_play_count 딕셔너리genres의 요소인 '장르'는 최대 100개songs 배열genre_play_count를 통해 sorted_genres 정렬
sorted_genres를 순회하면서, genre_songs에 해당 장르의 음악 정보를 추가
answer 배열에 추가*O*(*n*log*n*)
def solution(genres, plays):
# 장르별 총 재생 횟수 집계
genre_play_count = {}
# 곡별 정보 저장 (장르, 재생 횟수, 인덱스)
songs = []
for i, g in enumerate(genres):
genre_play_count[g] = genre_play_count.get(g, 0) + plays[i]
songs.append((g, plays[i], i))
# 장르별 총 재생 횟수를 기준으로 정렬
# 튜플 형태의 (key : value)로 반환
sorted_genres = sorted(genre_play_count.items(), key=lambda x: x[1], reverse=True)
answer = []
for g, _ in sorted_genres:
# 해당 장르의 곡을 재생 횟수로 정렬
genre_songs = []
for song in songs:
if song[0] == g:
genre_songs.append(song)
genre_songs.sort(key=lambda x: x[1], reverse=True)
# 상위 2개의 곡을 선택 (인덱스를 이용하여)
for song in genre_songs[:2]:
answer.append(song[2]) # 인덱스를 추가
return answer