const-tommy.dev
기록을 불러오는 중입니다
genreHash를 만들어 {장르: 총 재생수}를 저장한다.playHash에 {장르: [{id, count}, ...]} 형태로 데이터를 쌓는다.genreHash를 배열로 변환해 내림차순 정렬한다.id)가 낮은 순서대로 가져오는 예외 조건도 챙겨야 함/*
genres, plays
classic -> 500 + 150 + 800 = 1450
pop -> 600 + 2500 = 3100
*/
function solution(genres, plays) {
// TODO: 장르 합 대소 구분, 장르별 횟수 구분
let genreHash = new Map();
let playHash = new Map();
for (let i = 0; i < genres.length; i += 1) {
genreHash.set(genres[i], (genreHash.get(genres[i]) || 0) + plays[i]);
if (!playHash.has(genres[i])) playHash.set(genres[i], []);
playHash.get(genres[i]).push({ id: i, count: plays[i] });
}
const sortedGenreHash = [...genreHash.entries()].sort((a, b) => b[1] - a[1]);
const result = [];
sortedGenreHash.forEach(([genre, total]) => {
const topTwosongs = playHash.get(genre)
.sort((a, b) => b.count - a.count)
.slice(0, 2);
topTwosongs.forEach(s => result.push(s.id));
});
return result;
}