** 알고리즘 오답노트 09
멜론 베스트 앨범 뽑기
- 각 장르 별 재생 수 총합을 담은 딕셔너리 1개, 각 장르 별 [인덱스, 재생 수] 를 리스트로 담은 딕셔너리 1개, 총 두 개의 딕셔너리를 구성해야함.
- 딕셔너리에서 value를 이용한 정렬, 여러 리스트 간 특정 인덱스(1)를 이용한 정렬은 sorted 함수와 lambda식을 이용한다.
genres = ["hiphop", "classic", "pop", "classic", "classic", "pop", "hiphop"]
plays = [2000, 500, 600, 150, 800, 2500, 2000]
def get_melon_best_album(genre_array, play_array):
sum_dict = {}
music_dict = {}
result = []
for i in range(len(genre_array)):
if genre_array[i] not in sum_dict:
sum_dict[genre_array[i]] = play_array[i]
music_dict[genre_array[i]] = [[i, play_array[i]]]
else:
sum_dict[genre_array[i]] += play_array[i]
music_dict[genre_array[i]].append([i, play_array[i]])
sum_dict = sorted(sum_dict, key= lambda x : sum_dict[x], reverse=True)
# 딕셔너리 소팅의 기본은 키값이므로 lambda를 이용해 소팅 기준을 sum_dict[x], 즉 value로 변경시켜준다.
for i in sum_dict:
music_dict[i] = sorted(music_dict[i], key=lambda x:x[1], reverse=True)
# 배열 간의 비교에서 몇번째 인덱스를 비교할것인지에 대해 lambda를 이용해 소팅 기준을 1번 인덱스로 정해준다.
for j in range(len(music_dict[i])):
if j > 1:
break
result.append(music_dict[i][j][0])
return result
print(get_melon_best_album(genres, plays))
Author And Source
이 문제에 관하여(** 알고리즘 오답노트 09), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@uvula6921/알고리즘-오답노트-08-sz2ez81h저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)