문제 링크
https://programmers.co.kr/learn/courses/30/lessons/42579
코딩테스트 연습 - 베스트앨범
스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가
programmers.co.kr
풀이 - 다른 블로그 참고
- defaultdict 사용
- play_dic[장르] : (고유번호, 재생수)
- genre_dic[장르] : 장르별 총 재생수
from collections import defaultdict
def solution(genres, plays):
answer = []
play_dic = defaultdict(list)
genre_dic = defaultdict(int)
for i in range(len(genres)):
# 장르별 재생수 더하기
genre_dic[genres[i]] += plays[i]
# 장르별 고유번호와 재생수
play_dic[genres[i]].append((i, plays[i]))
# 총 재생수 기준으로 정렬 후 장르 반환
items = sorted(genre_dic, key = lambda x : genre_dic[x],reverse=True)
# 장르별로 베스트 앨범 두개
for item in items:
# 재생수 기준으로 정렬
tmp = sorted(play_dic[item], key = lambda x : x[1],reverse=True)
# 고유번호 저장
for idx, play in tmp[:2]:
answer.append(idx)
return answer
'개발 > algorithm' 카테고리의 다른 글
[프로그래머스][level3] 단속카메라 - python (0) | 2022.01.10 |
---|---|
[프로그래머스][level3] 경주로 건설 -python/ bfs (0) | 2022.01.10 |
[프로그래머스][level3] 합승 택시 요금 -python (0) | 2022.01.10 |
[프로그래머스][level3] 불량 사용자 -python (0) | 2022.01.10 |
[프로그래머스][level3] 다단계 칫솔 판매 - python (0) | 2022.01.10 |