본문 바로가기

프로그래머스 퀴즈(Python)/level 3

23.03.01 파이썬 코딩 퀴즈#179 베스트앨범(프로그래머스 스쿨)

이번 문제는 베스트앨범 문제이다.

genres 에는 음악장르가, plays 는 재생횟수가 전달된다. 이 때 베스트앨범을 만드는 조건은

1. 속한 노래가 많이 재생된 장르를 먼저 수록합니다. (장르별 재생횟수 오름차순 정렬)

2. 장르 내에서 많이 재생된 노래를 먼저 수록합니다. (장르내에 재생 횟수별 오른차순 정렬)

3. 장르 내에서 재생 횟수가 같다면, 고유 번호가 낮은 노래를 먼저 수록합니다 (index 오른차순 기준)

이며, 각 장르별로 두 개씩 모아서 만들어야 한다.

입출력 예를 살펴보면, classic 은 총 3곡, pop은 총 2곡으로 각 배열에는 5개의 요소가 저장되어 있다.

여기서 고유 번호는 index 번호이며, 0번도 배정 가능하다

 

앨범을 만드는 기준에 맞추어, 장르별 수록 우선순위를 정해야 하고, 그 다음 장르내에서 수록 우선위를 정해서 배열에 담아야 한다.

먼저 새 dict 에 장르별로 재생횟수를 구해준 다음, 재생횟수 기준으로 내림차순 정렬한 배열을 만들어 주었다.

이제 genres를 돌면서 장르에 맞추어 temp 에 index와 재생횟수(plays[j])를 전달하고, 이를 다시 고유번호 기준 내림차순 정렬 후 재생횟수 기준 오름차순 정렬하여 준 뒤, 해당 temp[:2] 범위만 돌면서 answer에 index 값을 넣어주면 된다.

 

뭔가 정렬만 하다가 끝난 문제 같은데, 실제로 마지막 temp 를 정렬하는 저 방법을 모르면 많이 돌아가야 하는 문제이다.