본문 바로가기
ALGORITHM/PROGRAMMERS

[PG/Python] 베스트앨범

by 안녕나는현서 2021. 12. 29.
728x90

📌 문제

https://programmers.co.kr/learn/courses/30/lessons/42579

 

코딩테스트 연습 - 베스트앨범

스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가

programmers.co.kr

 

📌 문제 접근 방법

  1. 앨범에 노래를 수록하는 조건의 순서는 다음과 같다.
    속한 노래가 많이 재생된 장르 - 장르 내에서 많이 재생된 노래 - 재생 횟수가 같은 경우 고유 번호가 낮은 노래
  2. 아직 lambda 사용이 익숙치 않아서 원하는 대로 정렬을 하는 게 어려웠다.
    하지만 정렬만 제대로 한다면 어렵지 않은 문제!

 

📌 코드

from collections import defaultdict

def solution(genres, plays):
    album = defaultdict(list)
    for i in range(len(genres)):
        album[genres[i]].append((i, plays[i]))
    
    sorted_genres = sorted(album.keys(), key=lambda x: -sum(song[1] for song in album[x]))

    answer = []
    for genre in sorted_genres:
        songs = sorted(album[genre], key=lambda x: (-x[1], x[0]))
        
        answer.append(songs[0][0])
        if len(songs) > 1:
            answer.append(songs[1][0])
            
    return answer
728x90

'ALGORITHM > PROGRAMMERS' 카테고리의 다른 글

[PG/Python] 숫자 문자열과 영단어  (0) 2022.01.08
[PG/Python] 보석 쇼핑  (0) 2022.01.08
[PG/Python] 표 편집  (0) 2021.12.27
[PG/Python] 디스크 컨트롤러  (0) 2021.12.26
[PG/Python] 야근 지수  (0) 2021.12.22

댓글