💻 문제 풀이 : Python
⭐ 내 풀이
def solution(genres, plays):
answer = []
# 전체 정보 해쉬
dic = {}
# 장르의 속한 노래 해쉬
dic_genre = {}
for i in range(len(genres)):
if dic.get(genres[i], 0) == 0:
dic[genres[i]] = [[i, plays[i]]]
dic_genre[genres[i]] = plays[i]
else :
dic[genres[i]].append([i, plays[i]])
dic_genre[genres[i]] += plays[i]
# 속한 노래가 많이 재생된 장르
dic_genre = sorted(dic_genre.items(), key = lambda item : item[1], reverse=True)
# 장르 내에서 / 많이 재생된 / 고유번호가 낮은 노래
for key in dic.keys():
dic[key] = sorted(dic[key], key = lambda x : (-x[1], x[0]))
# 최대 두 곡 베스트 앨범 만들기
for key in dic_genre:
if len(dic[key[0]]) >= 2:
for i in range(2):
answer.append(dic[key[0]][0][0])
dic[key[0]].pop(0)
else:
answer.append(dic[key[0]][0][0])
dic[key[0]].pop(0)
return answer
📌 memo
dic = {}
for i in range(len(genres)):
# 해당 key가 비어있으면 리스트로 생성
if dic.get(genres[i], 0) == 0:
dic[genres[i]] = [[i, plays[i]]
# 해당 key에 리스트가 있으면 뒤에 추가
else :
dic[genres[i]].append([[i, plays[i]])
- Dict 정렬하기
# item[0] : key / item[1] : value / 오름차순 : reverse = True
dic_genre = sorted(dic_genre.items(), key = lambda item : item[1], reverse = True)
- Dict 내부 list를 정렬하기
# lambda로 했을 때 x 로 가정하면 / 내림차순 : x[i], 오름차순 : -x[i]
for key in dic.keys():
dic[key] = sorted(dic[key], key = lambda item : (-item[1], item[0]))