프로그래머스>코딩테스트 연습>해시>베스트앨범 https://programmers.co.kr/learn/courses/30/lessons/42579
// 1. 같은 장르끼리 묶기
// 2. 묶인 노래들을 재생 순으로 정렬을 한다.
// 3. 노래를 2개까지는 자르는 작업을 한다.
// 핵심 키워드는 "묶는 것, 정렬"
function solution(genres, plays) {
const genreMap = new Map();
genres
.map((item, idx) => [item, plays[idx]])
.forEach((el, idx) => {
const genre = el[0]; //장르
const play = el[1]; // 재생 순
const data = genreMap.get(genre) || { total: 0, songs: [] };
genreMap.set(genre, {
total: data.total + play,
songs: [...data.songs, { play, idx}]
.sort((a, b) => b.play - a.play)
.slice(0, 2)
})
})
return [...genreMap.entries()]
.sort((a, b) => b[1].total - a[1].total)
.flatMap(item => item[1].songs)
.map(song => song.index)
}