사용 언어 - Python3
문제 - 베스트앨범
https://school.programmers.co.kr/learn/courses/30/lessons/42579
정답
hash 사용하기
1. 딕셔너리 생성
dic1 각 장르별 인덱스와 재생수 dic1[g] = [(i,p)]
dic2 각 장르별 재생횟수 총합 dic2[g] += p
2. 정렬
dic2의 장르별 총 재생 횟수가 많은 순서대로 내림차순 정렬
> dic1[k] 해당 장르에서 가장 많이 재생된 순서대로 내림차순 정렬 -> [:2] 두곡만
index를 answer에 저장후 return
def solution(genres, plays):
answer = []
dic1 = {}
dic2 = {}
for i, (g,p) in enumerate(zip(genres, plays)):
# 장르별 index, players 수
if g not in dic1:
dic1[g] = [(i,p)]
else:
dic1[g].append((i,p))
# 장르별 재생횟수 총합 구하기
if g not in dic2:
dic2[g] = p
else:
dic2[g] += p
# 장르별 총 재생 횟수(v)를 기준으로 dic2 내림차순
for (k,v) in sorted(dic2.items(), key = lambda x:x[1], reverse=True):
# 같은 장르(k)에서 가장 많이 재생된 노래 2곡 dic1 [:2]
for (i,p) in sorted(dic1[k], key = lambda x:x[1], reverse=True)[:2]:
answer.append(i)
return answer
레퍼런스
정답 깃허브
'Algorithm > 해시' 카테고리의 다른 글
[프로그래머스 lv 2] 의상 (2) | 2023.12.04 |
---|---|
[프로그래머스 lv 2] 전화번호 목록 (0) | 2023.12.04 |
[프로그래머스 lv 1] 폰켓몬 (0) | 2023.05.29 |
[프로그래머스 lv1] 완주하지 못한 선수 (0) | 2023.05.29 |
댓글