💡코딩테스트/프로그래머스
[프로그래머스 | python] 베스트앨범
두_두
2023. 4. 17. 11:59
👀 문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
- 속한 노래가 많이 재생된 장르를 먼저 수록합니다.
- 장르 내에서 많이 재생된 노래를 먼저 수록합니다.
- 장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록합니다.
👁 풀이
- count = 베스트앨범 안에 들어간 곡 수
- dic = 각 장르별 플레이 수
- li 안에 각 노래의 고유번호, 장르, 플레이 수를 넣은 후 플레이 수로 정렬해 준다 ➡️ 장르 내에서 많이 재생된 노래를 2곡씩 선택할 때 편해짐
- arr는 각 장르별 선택된 노래 2가지씩 들어있는 리스트 ➡️ 이 리스트를 많이 재생된 장르, 플레이수, 고유번호 순으로 정렬해 주면 되겠다.
from collections import defaultdict
def solution(genres, plays):
arr = []
count = defaultdict(int)
dic = defaultdict(int)
li = list([idx, x[0], x[1]] for idx, x in enumerate(zip(genres, plays)))
li.sort(key = lambda x : -x[2])
for idx, genre, play in li:
dic[genre] += play
if count[genre] < 2:
count[genre] += 1
arr.append([idx, genre, play])
return [x[0] for x in sorted(arr, key = lambda x : (-dic[x[1]], -x[2], x[0]))]
728x90