일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 17144번
- SW ExpertAcademy
- 빛의 경로 사이클
- 12869번
- 어른 상어
- HTML 기초
- 19238번
- SW Expert Academy
- QueryDSL 기초
- 9095번
- 스타트 택시
- 수식 최대화
- 프로그래머스
- 거울 설치
- 1038번
- 파이썬
- 경주로 건설
- 16234번
- 12865번
- 미세먼지 안녕!
- 15686번
- 1789번
- 감소하는 수
- 2020 카카오 인턴십
- 14499번
- python
- 백준 알고리즘
- 보석 쇼핑
- 키패드 누르기
- 베스트엘범
Archives
- Today
- Total
보물창고 블로그
프로그래머스 베스트엘범 풀이 With Python 본문
728x90
문제 링크: https://programmers.co.kr/learn/courses/30/lessons/42579
코딩테스트 연습 - 베스트앨범
스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가
programmers.co.kr
파이썬 자료구조인 Dictionary를 사용하여 장르별 재생 횟수와 장르내에서 각 노래별 재생 횟수를 Dictionary key, value 값으로 저장하여 가장 재생 횟수가 많은 장르 순서로, 장르 내에서는 재생 횟수가 높은 노래 순서로 2개 혹은 1개씩 answer 리스트에 담아서 답을 구합니다. 소스코드는 아래와 같습니다.
def solution(genres, plays):
answer = []
from collections import defaultdict
l = len(genres)
genrecount = defaultdict(int)
music = defaultdict(list)
for g in range(l):
genrecount[genres[g]] += plays[g]
music[genres[g]].append((g, plays[g]))
gen = list(genrecount.items())
gen.sort(key= lambda x: x[1], reverse=True)
for g in gen:
if len(music[g[0]]) == 1:
answer.append(music[g[0]][0][0])
else:
music[g[0]].sort(key=lambda x: x[1], reverse=True)
answer.append(music[g[0]][0][0])
answer.append(music[g[0]][1][0])
return answer
소스코드에 대한 질문이 있으시면 댓글 남겨주시면 답변드리겠습니다. :-)
'알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글
프로그래머스 메뉴 리뉴얼 풀이 With Python (0) | 2022.02.23 |
---|---|
프로그래머스 K번째수 풀이 With Python (0) | 2022.02.12 |
프로그래머스 위장 풀이 With Python (0) | 2022.02.12 |
프로그래머스 전화번호 목록 풀이 With Python (0) | 2022.02.12 |
프로그래머스 완주하지 못한 선수 풀이 With Python (0) | 2022.02.12 |
Comments