Notice
Recent Posts
Recent Comments
Link
DevKim
[Python] 프로그래머스 LV.03 - 베스트 앨범 본문
728x90
programmers.co.kr/learn/courses/30/lessons/42579
코딩테스트 연습 - 베스트앨범
스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가
programmers.co.kr
[ 알고리즘 / 자료구조 ]
해시
[문제 접근]
defaultdict으로 list 형태의 딕셔너리를 생성해주고, 제한 사항에 맞춰 하나씩 정렬해주고 조건을 달아주면 된다
[코드]
from collections import defaultdict
def solution(genres, plays):
answer = []
dic=defaultdict(list)
max_g=defaultdict(int)
# dic 배열 먼저 만들기
for i in range(len(genres)):
g=genres[i]
p=plays[i]
dic[g].append((p,i)) #play 수와 고유번호
#최대인 장르 순서대로 넣기
for i in range(len(genres)):
g=genres[i]
p=plays[i]
max_g[g]+=p
#총 곡수가 많은 순서대로 정렬
max_g=sorted(max_g.items(),key=lambda x:x[1],reverse=True)
for g in max_g:
cnt=0
ptr=g[0]
p=dic.pop(ptr) #해당 value 값 반환
p=sorted(p,key=lambda x:x[0],reverse=True)
for play in p:
answer.append(play[1])
cnt+=1
if cnt==2:
break
return answer
728x90
'알고리즘 PS' 카테고리의 다른 글
[Python] 프로그래머스 LV.03 - 네트워크 (0) | 2021.03.13 |
---|---|
[Python] 프로그래머스 LV.03 - 여행경로 (+) test case (0) | 2021.03.13 |
[Python] 프로그래머스 LV.03 - 멀리 뛰기 (0) | 2021.03.13 |
[Python] 프로그래머스 LV.03 - 줄 서는 방법 (0) | 2021.03.13 |
[Python] 프로그래머스 LV.03 - 최고의 집합 (0) | 2021.03.13 |
Comments