지식의모듈화

[Level 3][Javascript]베스트앨범 본문

PS/프로그래머스

[Level 3][Javascript]베스트앨범

returnzero 2022. 6. 23. 22:07
function solution(genres, plays) {
    var answer = [];

    function Item(genre, play, id){
        this.genre=genre;
        this.play=play;
        this.id=id
    }
    
    let genreSum={};
    let itemArr=[];
    
    for (let i =0; i<genres.length;i++){
        itemArr.push(new Item(genres[i],plays[i],i));
        genreSum[ genres[i]] = (genreSum[genres[i]]||0) +plays[i]
    }
    let sortable=[];
    for (let key in genreSum){
        sortable.push([key, genreSum[key]])
    }
    // console.log(genreSum);
    sortable.sort(
        function(a,b){return b[1]-a[1]}
    );
    // console.log(sortable);
    for (let value of sortable){
        // console.log(value[0]);
        let Musics= itemArr.filter(e=> e.genre==value[0]);
        // console.log(Musics);
        Musics.sort(function(a,b){
            if (b.play===a.play) return a.id-b.id;
            else{
            return b.play-a.play
            }
        })
         answer.push(Musics[0].id);
        if(Musics.length > 1) {
            answer.push(Musics[1].id);
        }
    }

    return answer;
}

그리 어렵지 않다. 어려운 자료구조 생각하지 말고 머리속에 생각나는 직관적인 모습으로 고치자.