코테/프로그래머스
프로그래머스 level3 [베스트앨범] 파이썬
동 캄
2022. 4. 7. 17:06
반응형
https://programmers.co.kr/learn/courses/30/lessons/42579
코딩테스트 연습 - 베스트앨범
스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가
programmers.co.kr
# 프로그래머스 베스트앨범
def solution(genres, plays):
answer = []
genre_ = set(genres)
sum_play = {}
lst = {}
for genre in genre_:
lst[genre] = []
sum_play[genre] = 0
for val in enumerate(zip(genres, plays)):
lst[val[1][0]].append([val[0], val[1][1]])
sum_play[val[1][0]] += val[1][1]
sum_play = sorted(sum_play.items(), key=lambda x: -x[1])
for genre in genre_:
lst[genre] = sorted(lst[genre], key=lambda x: -x[1])
for genre, S in sum_play:
if len(lst[genre]) >= 2:
answer.append(lst[genre][0][0])
answer.append(lst[genre][1][0])
elif len(lst[genre]) == 1:
answer.append(lst[genre][0][0])
return answer
먼저 genre의 종류를 genre_에 저정한 뒤, lst에 빈 배열을 생성하고, sum_play에 값을 0으로 초기화 해준다. 그 후에 sum_play에는 각 genre 별로 재생 횟수(play)를 더하고, lst의 각 배열에는 각 genre별 재생횟수를 저장한다.
그 뒤로 재생횟수의 합이 큰 장르를 기준으로 answer에 append 해준다.
반응형