문제출처: https://programmers.co.kr/learn/courses/30/lessons/42579
접근법
처음에도 통과는 했지만 매우 비효율적이고 복잡한 코드들이였다.
정답자들의 코드를 보며 아직 부족한 부분들이 많고 항상 더 나은 코드를 생각하는 습관이 필요할 것 같다.
코드
from collections import defaultdict
def solution(genres, plays):
answer = []
d = defaultdict(list)
rank = defaultdict(int)
for index,(i,j) in enumerate(zip(genres,plays)):
d[i].append( (j,index) )
rank[i] += j
for key,val in sorted(rank.items(),key=lambda x:x[1],reverse=True):
for k,v in sorted(d[key],key=lambda x:x[0],reverse=True)[:2]:
answer.append(v)
# rank = []
# for key,val in zip(d,d.values()):
# val.sort(key=lambda x:x[0],reverse=True) # 장르 안 노래들 정렬
# s = 0
# for t in val:
# s += t[0]
# rank.append( (key,s) )
# rank.sort(key=lambda x:x[1],reverse=True)
# for r in rank:
# genre = r[0]
# if( len(d[genre]) > 1 ):
# answer.extend( [d[genre][0][1],d[genre][1][1]] )
# else:
# answer.append( d[genre][0][1] )
return answer