from collections import defaultdict
def solution(genres, plays):
dic = defaultdict(list)
for i, info in enumerate(zip(genres, plays)) :
kind, play_time = info
dic[kind].append([i, play_time])
answer = []
for k in sorted(dic.values(), key = lambda info : sum(play_time for i, play_time in info), reverse = True) :
answer.extend(sorted(k, key = lambda info : info[1], reverse = True)[:2])
return [index for index, _ in answer]
풀이
- 속한 노래가 많이 재생된 장르를 먼저 수록합니다.
- 장르 내에서 많이 재생된 노래를 먼저 수록합니다.
- 장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록합니다.
장르당 노래 2개씩 앨범에 수록합니다.
총 재생횟수가 가장 많은 장르순으로 정렬
장르내에서 가장 많이 재생된 노래 최대 2개씩 선택해 앨범에 수록
from collections import defaultdict
def solution(genres, plays):
dic = defaultdict(list)
for i, info in enumerate(zip(genres, plays)) :
kind, play_time = info
dic[kind].append([i, play_time])
answer = []
for kind in sorted(dic.values(), key = lambda info : sum(play_time for i, play_time in info), reverse = True) : # 총 재생수가 가장 많은 장르 [index, play_time]리스트 순으로 반복문 수행
answer.extend(sorted(kind, key = lambda info : (info[1], -info[0]), reverse = True)[:2])
# play_time은 내림차순, index는 오름차순 정렬후 2개씩 뽑아 저장
return [index for index, _ in answer]