유형 : 해시
풀이 시간 : 20분
<풀이 코드>
def solution(genres, plays):
answer = []
gendict = {}
for i in range(len(genres)):
if genres[i] in gendict:
gendict[genres[i]][0] += plays[i]
gendict[genres[i]][1].append([plays[i], i])
else:
gendict[genres[i]] = [plays[i], [[plays[i], i]]]
vlist = list(gendict.values())
vlist.sort(reverse = True)
for v in vlist:
[v1, v2] = v
v2.sort(reverse = True, key = lambda x: (x[0], -x[1]))
for i in range(min(len(v2),2)):
answer.append(v2[i][1])
print(vlist)
return answer
gendict를 이용하여 풀이했다.
dict에 genre별로 음악이 재생된 총 횟수와 해당 음악에 대한 정보 리스트를 담고,
재생 횟수로 dict를 정렬한 다음,
순서대로 이 list를 순회하며 각 음악 별로 상위 2개를 answer에 담도록 하였다.
*이차원 배열의 정렬 키*
https://haesoo9410.tistory.com/193
v2.sort(reverse = True, key = lambda x: (x[0], -x[1]))
두 개의 요소를 key로 사용하기 위해서는 key에 set을 넣어 주면 된다.
그리고 만약 반대로 정렬이 필요한 경우 -를 앞에 붙여 준다.
'프로그래머스 > Lv. 3' 카테고리의 다른 글
5. 정수 삼각형 (DP) (0) | 2024.07.19 |
---|---|
4. 여행경로 ★★ (0) | 2024.07.19 |
3. 단어 변환 (BFS) (0) | 2024.07.19 |
2. 네트워크 (0) | 2024.07.19 |