https://programmers.co.kr/learn/courses/30/lessons/42579
def solution(genres, plays):
genre = {}
lst = []
idx = 0
for g, p in zip(genres, plays):
lst.append([p, idx, g])
idx += 1
if (g in genre):
genre[g] += p
else:
genre[g] = p
sorted_genre = sorted(genre.items(), key = lambda x : x[1], reverse=True)
lst.sort(key = lambda x : (x[0], -x[1]), reverse=True)
answer = []
for genre, _ in sorted_genre:
cnt = 0
for p, idx, g in lst:
if (g == genre):
answer.append(idx)
cnt += 1
if (cnt > 1):
break
return answer
각 genre
별 플레이 수를 카운트하고 별도의 리스트에 플레이수, 인덱스, 장르
를 넣는다. 그후 genre
는 플레이 수의 내림차순, 별도의 리스트는 플레이수, -인덱스
로 내림차순하여 정렬후 각 genre
를 돌며 리스트에 genre
와 장르가 같으며 노래의 수가 2개 이하이면 answer
에 넣으며 순회후 answer
를 리턴한다.
Java
로 풀때는 너무 오래걸렸는데 Python
으로 해결하니 너무 어이없을정도로 쉽게 풀렸다.