문제 조건


input

output

문제 해석


코드


*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