코딩테스트

[예외처리못함/프로그래머스] 베스트앨범

_서리__ 2023. 6. 7. 17:30
function solution(genres, plays) {
    var answer = [];
    let genresPlayNumber = {};
    let genresSongPlay = {};
    let genresPlayNumberArr = [];
    for(let i=0;i<genres.length;i++){
        if(!genresPlayNumber[genres[i]]){
            genresPlayNumber[genres[i]]=0
        }
        if(!genresSongPlay[genres[i]]){
            genresSongPlay[genres[i]]=[]
        }
        genresPlayNumber[genres[i]]+=plays[i]
        genresSongPlay[genres[i]].push([i,plays[i]])
    }
    for(let key in genresPlayNumber){
        genresPlayNumberArr.push([key,genresPlayNumber[key]])
    }
    genresPlayNumberArr.sort((a,b)=>b[1]-a[1]);
    for(let i=0;i<genresPlayNumberArr.length;i++){
        const arr = genresSongPlay[genresPlayNumberArr[i][0]]
        if(arr.length>1) arr.sort((a,b)=>b[1]-a[1])
        answer.push(arr[0][0])
        if(arr.length>1) answer.push(arr[1][0])
    }

    return answer;
}

arr.length가 1인경우를 고려했어야 하는데 못해서 런타임에러가 계속 났었다!