Data Engineering/Python
[코테] 프로그래머스 - 베스트앨범 Python 코드
by strongstar
2025. 10. 15.
def solution(genres, plays):
counts = {} # key: 장르, value: 총 재생횟수
for i in range(len(genres)):
counts[genres[i]] = counts.get(genres[i], 0) + plays[i]
counts = sorted(counts.items(), key=lambda x: x[1], reverse=True)
answer = []
for i in range(len(counts)): # 제일 많이 들은 장르부터, 장르의 개수만큼 반복
idx1, idx2 = -1, -1 # 베스트1, 베스트2 곡의 인덱스
for idx in range(len(genres)):
if counts[i][0] == genres[idx]: # 현재 찾고 있는 장르가 맞으면
if idx1 == -1: # 베스트1, 베스트2 순서대로 일단 채우기
idx1 = idx
elif idx2 == -1:
idx2 = idx
elif plays[idx2] < plays[idx] or (plays[idx2] == plays[idx] and idx < idx2):
idx2 = idx
# 베스트1, 베스트2 비교해서 순서 맞추기
if plays[idx1] < plays[idx2] or (plays[idx1] == plays[idx2] and idx2 < idx1):
idx1, idx2 = idx2, idx1
if idx1 != -1:
answer.append(idx1)
if idx2 != -1 and idx1 != idx2:
answer.append(idx2)
return answer
# https://school.programmers.co.kr/learn/courses/30/lessons/42579