문제 설명 및 제한사항
아이디어 및 해결 방법
코드
from collections import Counter
def solution(genres, plays):
# 장르 별 재생 횟수 카운터입니다.
genrecnt = Counter()
for genre, n in zip(genres, plays):
genrecnt[genre] += n
# 이후 노래 인덱스에 대해 정렬합니다.
# 노래 재생횟수보다 장르에 대한 정렬이 우선순위가 높으므로,
# 장르를 나중에 정렬함에 주의합니다.
indices = list(range(len(plays)))
indices.sort(key=lambda i: plays[i], reverse=True)
indices.sort(key=lambda i: genrecnt[genres[i]], reverse=True)
# 마지막으로, 각 장르에 대해 최대 2개의 노래만 선택합니다.
answer, selectcnt = [], Counter()
for i in indices:
if selectcnt[genres[i]] < 2:
answer.append(i)
selectcnt[genres[i]] += 1
return answer
Python
복사
출처
프로그래머스 코딩테스트 연습 https://school.programmers.co.kr/learn/challenges