[JavaScript] 프로그래머스 베스트앨범 LEVEL3

김예진·2020년 7월 10일
0

코딩 테스트

목록 보기
2/42

문제출처

코드

function solution(genres, plays) {
    // {장르: 총재생횟수, [인덱스, 재생횟수]}
    const summaryGenres = genres.reduce((acc, cur, idx) => {
        if(!acc[cur]) {
            acc[cur] = {
                totalPlay: 0,
                playList: [],
            };
        }
        acc[cur].totalPlay += plays[idx];
        acc[cur].playList.push([idx, plays[idx]]);
        
        return acc;
    }, {});
    // console.log(summaryGenres);
    
    // 총재생횟수를 내림차순으로 정렬
    const sortedSummaryGenres = (Object.values(summaryGenres).sort((x, y) => y.totalPlay - x.totalPlay))
    // console.log(sortedSummaryGenres)
    
    const answer = sortedSummaryGenres.reduce((acc, genre) => {
        genre.playList.sort((x, y) => y[1] - x[1]);  // 각 장르에서 재생횟수 내림차순 정렬
        
        acc.push(genre.playList[0][0]);
        
        if(genre.playList.length > 1) {
            acc.push(genre.playList[1][0]);
        }
        return acc;
    }, []);
    
    return answer;
}

고찰

장르가 여러개면 모든 장르에 대해 2곡 미만으로 앨범에 수록해야함... 두 장르만 앨범에 수록된다고 생각해서 매번 헤맸음

0개의 댓글