https://school.programmers.co.kr/learn/courses/30/lessons/42579
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
def solution(genres, plays):
# key: 장르 , value: (곡의 index, play수)인 딕셔너리
genere_dic = {}
for i, g in enumerate(genres) :
if g not in genere_dic : genere_dic[g] = [(i, plays[i])] #index, play수
else : genere_dic[g].append((i, plays[i])) #index, play수
# 각 키 내에서 조건 2, 조건 3에 따라 정렬
for genre, values in genere_dic.items():
genere_dic[genre] = sorted(values, key=lambda x: (x[1], -x[0]), reverse=True)
# 조건 1에 따라 키 정렬
sorted_genere = sorted(genere_dic.items(), key=lambda x: sum(v[1] for v in x[1]), reverse=True)
sorted_genere = dict(sorted_genere)
# 결과 list로 정리
res = []
for key, val in sorted_genere.items() :
if len(val) < 2 :
res.append(val[0][0])
else :
res.append(val[0][0])
res.append(val[1][0])
return res