프로그래머스 level3 베스트 앨범

Kim Yongbin·2023년 9월 6일
0

코딩테스트

목록 보기
41/162

Problem

https://school.programmers.co.kr/learn/courses/30/lessons/42579?language=python3#

장르별 2개씩
우선순위
1. 많이 재생된 장르
2. 많이 재생된 노래
3. 고유 번호 낮은 순

Solution

def solution(genres, plays):
    answer = []
    
    genre_dict = {}
    for idx, genre in enumerate(genres):
        if genre_dict.get(genre) is None:
            genre_dict[genre] = {
                "count": plays[idx],
                "details": {idx: plays[idx]}
            }
        else:
            genre_dict[genre]["count"] += plays[idx]
            genre_dict[genre]["details"][idx] = plays[idx]
            
    for details_info in sorted(genre_dict.values(), key=lambda x: x["count"], reverse=True):
        for idx, count in sorted(details_info["details"].items(), key=lambda x: x[1], reverse=True)[:2]:
            answer.append(idx)
    
    return answer
genre_dict = {
		genre: {
				count: int,       # total count 
				details: {        # 해당 장르의 음악 정보
						idx: count    # 음악 idx, count 정보
				}
		} 
}

각 장르별 total count를 이용하여 정렬하고, 장르의 details는 해당 음악의 count로 정렬하였다.

각 장르별로 최대 2개씩 뽑기 위해 슬라이싱 하였다.

Reference

profile
반박 시 여러분의 말이 맞습니다.

0개의 댓글