Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 |
Tags
- 힙
- 가상메모리 관리
- 운영체제
- dict
- 구현
- 브루트포스
- 그리디
- 다이나믹 프로그래밍
- 재귀
- 스택
- 파이썬
- MYSQL
- level1
- dfs
- 수학
- level2
- 다익스트라
- python
- 백준
- 가상메모리
- BFS
- 프로그래머스
- N과M
- programmers
- 딕셔너리
- BOJ
- level0
- level3
- DP
- 코딩테스트
Archives
- Today
- Total
동캄의 코딩도장
프로그래머스 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 |