
pop()을 사용했기 때문에 내림차순으로 정렬해야 함def solution(genres, plays):
#songdata = list(zip(plays, list(range(len(plays)))))
total_play_count = {}
songs_by_genre = {}
data = list(zip(genres, plays, list(range(len(plays)))))
for genre, play, idx in data:
if not total_play_count.get(genre):
total_play_count[genre] = play
songs_by_genre[genre] = [(play, idx)]
else:
total_play_count[genre] += play
songs_by_genre[genre].append((play, idx))
#print(total_play_count)
#print(songs_by_genre)
answer = []
total_play_count = list(total_play_count.items())
total_play_count.sort(key=lambda x:-x[1])
for total in total_play_count:
song_list = songs_by_genre[total[0]]
song_list.sort(key=lambda x:(x[0],-x[1]))
for _ in range(2):
if not song_list:
break
play, idx = song_list.pop()
answer.append(idx)
return answer
def solution(genres, plays):
answer = []
dic1 = {}
dic2 = {}
for i, (g, p) in enumerate(zip(genres, plays)):
if g not in dic1:
dic1[g] = [(i, p)]
else:
dic1[g].append((i, p))
if g not in dic2:
dic2[g] = p
else:
dic2[g] += p
for (k, v) in sorted(dic2.items(), key=lambda x:x[1], reverse=True):
for (i, p) in sorted(dic1[k], key=lambda x:x[1], reverse=True)[:2]:
answer.append(i)
return answer
for i, (g, p) in enumerate(zip(genres, plays)):total_play_count.sort(key=lambda x:-x[1]) 이런 작업을 줄일 수 있음for (k, v) in sorted(dic2.items(), key=lambda x:x[1], reverse=True): 이렇게
