이 문제는 해시 카테고리 안에 있는 문제다
해시는 키-값 쌍으로 이루어진 자료구조를 의미하고, 파이썬 안에서는 딕셔너리 형태로 사용 가능하다
탐색할 게 많거나, 넣고 빼는 데이터가 많을 때 해시를 쓰는게 유용하다
각 고유번호 별로 만들어준 temp 리스트를 dict로 만들었다면 좀 더 빠르지 않았을까 싶다
def solution(genres, plays):
answer = []
temp = []
n = len(genres)
for i in range(n):
#(장르, 재생횟수, 고유번호) 입력
temp.append((genres[i], plays[i], i))
#(장르 오름차순, 재생횟수 내림차순, 고유번호 오름차순)으로 정렬
temp.sort(key=lambda x : (x[0], -x[1], x[2]))
count = {}
for t in temp:
if t[0] not in count:
count[t[0]] = t[1]
else:
count[t[0]] += t[1]
#재생횟수 기준 내림차순으로 정렬
count = sorted(list(count.items()), key = lambda x : -x[1])
for c in count:
cnt = 0
for t in temp:
#장르가 같으면, cnt가 2개가 될 때까지만 고유번호 입력
if c[0]==t[0]:
if cnt==2:
break
cnt+=1
answer.append(t[2])
return answer