본문 바로가기
카테고리 없음

프로그래머스 lv1. 모의고사

by Lizzie Oh 2022. 3. 31.

 

나의 풀이 

function solution(answers) {
    var answer = []
    var scores = [
        { person: 1, score: 0 },
        { person: 2, score: 0 },
        { person: 3, score: 0 }
        ];
    for (i=0; i<answers.length; i++) {
        const firstArr = [1,2,3,4,5];
        const secondArr = [2,1,2,3,2,4,2,5];
        const thirdArr = [3,3,1,1,2,2,4,4,5,5]
        if (firstArr[i%5] === answers[i]) {
            scores[0].score++;
        }
        if (secondArr[i%8] === answers[i]) {
            scores[1].score++;
        }
        if (thirdArr[i%10] === answers[i]) {
            scores[2].score++;
        }
    }

    scores.sort((a,b)=> b.score-a.score);    
    if (scores[0].score > scores[1].score) {
        answer.push(scores[0].person);   
    }
    else if (scores[1].score > scores[2].score) {
        answer.push(scores[0].person);   
        answer.push(scores[1].person);   
    }
    else {
        answer.push(scores[0].person);   
        answer.push(scores[1].person);   
        answer.push(scores[2].person);   
    }
    return answer;
}

문제는 크게 두 부분으로 나누어 풀었다. 먼저 세 수포자의 점수를 구하고, 그 후 점수를 이용해서 등수에 따라 배열을 입력하는 부분을 해결했다. 개인적으로 두번째 부분이 더 어려웠다 ^^; 

 

점수를 구하는 부분을 객체의 배열로 나열했기 때문에   scores.sort((a,b)=> b.score-a.score);  를 사용해서 배열을 점수 순으로 정렬할 수 있었고, if문을 사용해서 점수를 고려해서 배열로 리턴할 수 있었다. 효율성테스트가 있는 문제였다면 빼박 fail이지 않았을까 하는 생각을 해본다 ㅎㅎㅎ....

반응형

댓글