프로그래머스 문제 풀이 - 해시
⭐️파이썬 알고리즘 스터디 공통 문제⭐️
문제 확인 🏃
["classic", "pop", "classic", "classic", "pop"], [500, 600, 150, 800, 2500]
>> [4, 1, 3, 0]
["classic", "pop", "classic", "classic"], [500, 600, 150, 800]
>> [3, 0, 1]
["classic", "pop", "classic", "classic", "pop"], [500, 600, 500, 150, 2500]
>> [4, 1, 0, 2]
def solution(genres, plays):
answer = []
Music = {}
for idx in range(len(genres)):
genre = genres[idx]
play = plays[idx]
Music.setdefault(genre, [0])
Music[genre][0] += play
Music[genre].append((play, idx))
Music = sorted(Music.items(), key=lambda x: x[1][0], reverse=True)
for music in Music:
temp = sorted(music[1][1:], key=lambda x:(-x[0], x[1]))
answer.append(temp[0][1])
if len(temp) > 1:
answer.append(temp[1][1])
return answer

from collections import defaultdict
def solution(genres, plays):
answer = []
Music = defaultdict(lambda: [0])
for idx, (genre, play) in enumerate(zip(genres, plays)):
Music[genre][0] += play
Music[genre].append((play, idx))
Music = sorted(Music.items(), key=lambda x: x[1][0], reverse=True)
for music in Music:
temp = sorted(music[1][1:], key=lambda x:(-x[0], x[1]))
answer.append(temp[0][1])
if len(temp) > 1:
answer.append(temp[1][1])
return answer

from collections import defaultdict
def solution(genres, plays):
answer = []
count_genre = defaultdict(list)
count_play = defaultdict(int)
for idx, (genre, play) in enumerate(zip(genres, plays)):
count_play[genre] += play
count_genre[genre].append((idx, play))
for (g, _) in sorted(count_play.items(), key=lambda x:-x[1]):
for (p, _) in sorted(count_genre[g], key=lambda x:(-x[1], x[0])) [:2]:
answer.append(p)
return answer
