문제링크

문제풀이


function solution(genres, plays) {
    let answer = [];
    //장르순 정렬
    let genre_kind=[...new Set(genres)];
    let map=new Map();// 키: 장르, 값: 횟수인 맵   
    for(let i=0;i<genre_kind.length;i++){
        let count=0;
        for(let j=0;j<genres.length;j++){
            if(genre_kind[i]===genres[j]){
                count+=plays[j];
            }
        }
        map.set(genre_kind[i],count);
    }
    let obj=[...map];
    obj.sort((a,b)=>b[1]-a[1]);
    //같은 장르속 노래순 정렬
    for(let i=0;i<obj.length;i++){
        let map1=new Map();// 키: 고유번호, 값: 횟수인 맵
        for(let j=0;j<genres.length;j++){
            if(obj[i][0]===genres[j]){
                map1.set(j,plays[j]);
            }
        }
        let obj1=[...map1];
        //같은 노래속 고유번호 정렬, 재생 횟수 같을시 고유번호 낮은순으로 정렬
        obj1.sort((a,b)=>b[1]===a[1]?a[0]-b[0]:b[1]-a[1]);
        let num=Math.min(obj1.length,2);
        for(let k=0;k<num;k++){
            answer.push(obj1[k][0]);
        }
    }
    
    return answer;
}
profile
코딩 잘하고 싶음..

0개의 댓글

관련 채용 정보