728x90

나의 풀이
def solution(genres, plays):
genre_sum = dict()
songs_idx = dict()
answer = []
for i in range(len(genres)):
if genres[i] in genre_sum:
genre_sum[genres[i]] += plays[i]
songs_idx[genres[i]][i] = plays[i]
else:
genre_sum[genres[i]] = plays[i]
songs_idx[genres[i]] = {i: plays[i]}
genre_sum = dict(sorted(genre_sum.items(), key=lambda x: x[1], reverse=True))
for genre in genre_sum:
songs_idx[genre] = dict(sorted(songs_idx[genre].items(), key=lambda x: x[1], reverse = True))
idx = list(songs_idx[genre].keys())
answer.extend(idx[:2])
return answer
zip을 활용한 풀이
def solution(genres, plays):
answer = []
d = {e:[] for e in set(genres)}
for e in zip(genres, plays, range(len(plays))):
d[e[0]].append([e[1] , e[2]])
genreSort =sorted(list(d.keys()), key= lambda x: sum( map(lambda y: y[0],d[x])), reverse = True)
for g in genreSort:
temp = [e[1] for e in sorted(d[g],key= lambda x: (x[0], -x[1]), reverse = True)]
answer += temp[:min(len(temp),2)]
return answer
나의 풀이와 유사한 풀이
def solution(genres, plays):
genres_dict = {}
genres_list = []
for i in range(len(genres)):
if genres[i] not in genres_dict:
genres_dict[genres[i]] = []
genres_dict[genres[i]].append([i, plays[i]])
for g in genres_dict:
genres_dict[g].sort(key=lambda x: x[1], reverse=True)
genres_list.append([g, sum([play for _, play in genres_dict[g]])])
genres_list.sort(key=lambda x: x[1], reverse=True)
answer = []
for g, _ in genres_list:
answer.extend([x[0] for x in genres_dict[g][:2]])
return answer반응형
'Coding Test > Programmers' 카테고리의 다른 글
| [프로그래머스/파이썬] 프린터 (0) | 2022.05.31 |
|---|---|
| [프로그래머스/파이썬] 기능개발 (0) | 2022.05.31 |
| [프로그래머스/파이썬] 위장 (0) | 2022.05.24 |
| [프로그래머스/파이썬] 전화번호 목록 (0) | 2022.05.24 |
| [프로그래머스/파이썬] 완주하지 못한 선수 (0) | 2022.05.24 |