반응형
Notice
Recent Posts
Recent Comments
Link
동캄의 코딩도장
프로그래머스 level3 [베스트앨범] 파이썬 본문
반응형
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 해준다.
반응형
'코테 > 프로그래머스' 카테고리의 다른 글
| 프로그래머스 level3 [이중우선순위큐] 파이썬 (0) | 2022.04.07 |
|---|---|
| 프로그래머스 level3 [디스크 컨트롤] 파이썬 (0) | 2022.04.07 |
| 프로그래머스 level3 [입국심사] 파이썬 (0) | 2022.04.07 |
| 프로그래머스 level2 [양궁대회] 파이썬 (0) | 2022.02.09 |
| 프로그래머스 level2 [주차 요금 계산] 파이썬 (0) | 2022.02.09 |