[프로그래머스] 베스트앨범 (Javascript/자바스크립트)

박경빈·2023년 9월 25일
0
post-thumbnail

문제

프로그래머스>코딩테스트 연습>해시>베스트앨범 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)
}
profile
꺾여도 하는 마음

0개의 댓글