Recent Posts
밍쯔와 안작고 안귀여운 에러들🖤
[Python] 프로그래머스 고득점 kit - 해시: level3 베스트 앨범 본문
문제
https://programmers.co.kr/learn/courses/30/lessons/42579
코드
def solution(genres, plays) :
dic_totall = {}
dic = {}
num = 0
answer = []
##1. 각 장르별 총 실행 횟수
for gen in genres:
if gen not in dic_totall:
dic_totall[gen] = plays[num]
else:
dic_totall[gen] += plays[num]
num += 1
##내림차순 정렬
dic_totall = sorted(dic_totall.items(), key = lambda x: x[1], reverse=True)
##2. 스트리밍 수가 가장 많은 장르부터 2개씩 뽑기
for genre_totall, _ in dic_totall:
for gen in range(len(genres)):
if genres[gen] == genre_totall:
dic[gen] = plays[gen]
dic = sorted(dic.items(), key = lambda x: x[1], reverse=True)
##스트리밍 수가 가장 큰 2개만 선택
for music, _ in dic[:2]:
answer.append(music)
dic = {}
return answer
설명
먼저 장르마다 스트리밍 총 횟수를 딕셔너리 타입으로 {'장르': '총 횟수} 정리한다.
이후, 내림차순으로 정렬하고 각 장르의 개별 곡들의 스트리밍 수를 구분해 낸다.
그리고 그 중 가장 높은 2개를 answer에 담는다.
고찰
2번에서 장르 종류만큼 반복해서 다시 읽어야 하는 부분이 효율성 측면에서 떨어지는 것 같다. 문제를 다른 방식으로 접근해볼 필요가 있을 것 같다.
'Algorithm' 카테고리의 다른 글
[Python] 프로그래머스 - level1 신규 아이디 추천 (0) | 2022.03.07 |
---|---|
[Python] 프로그래머스 - level1 숫자 문자열과 영단 (0) | 2022.03.06 |
[Python] 프로그래머스 고득점 kit - 스택/큐: level2 다리를 지나는 트럭 (0) | 2022.02.26 |
[Python] 프로그래머스 고득점 kit - 스택/큐: level2 프린터 (0) | 2022.01.19 |
[Python] 프로그래머스 고득점 kit - 스택/큐: level2 기능개발 (0) | 2022.01.19 |