on my way
[프로그래머스 코딩테스트 연습] 베스트 앨범 (Python3) 본문
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/42579
# 리팩 전
from collections import defaultdict
def solution(genres, plays):
totalPlay = defaultdict(int)
songs = defaultdict(list)
for i, [genre, play] in enumerate(zip(genres, plays)):
totalPlay[genre] += play
songs[genre].append([play, i])
best = []
for genre, play in sorted(totalPlay.items(), key=lambda x: -x[1]):
for idx, [play, num] in enumerate(sorted(songs[genre], key=lambda x: -x[0])):
if idx > 1: break
best.append(num)
return best
# 리팩토링
from collections import defaultdict
def solution(genres, plays):
totalPlay = defaultdict(int)
songs = defaultdict(list)
for i, [genre, play] in enumerate(zip(genres, plays)):
totalPlay[genre] += play
songs[genre].append([play, i])
best = []
for genre in sorted(totalPlay, key=totalPlay.get, reverse=True):
for play, cnt in sorted(songs[genre], key=lambda x: -x[0])[:2]:
best.append(cnt)
return best
왜 sorted()[:2]를 생각하지 못했을까....
get함수도 key로 사용하는 법을 배웠다.
반응형
'algorithm > Python' 카테고리의 다른 글
[프로그래머스 코딩테스트 연습] 압축 (Python3) (0) | 2025.01.20 |
---|---|
[프로그래머스 코딩테스트 연습] 귤 고르기 (Python3) (0) | 2025.01.16 |
[프로그래머스 코딩테스트 연습] 전화번호 목록 (Python3) (0) | 2025.01.15 |
[프로그래머스 코딩테스트 연습] 완주하지 못한 선수 (Python3) (0) | 2025.01.15 |
[프로그래머스 코딩테스트 연습] 이진변환 반복하기 (Python3) (0) | 2025.01.14 |