본문 바로가기
자바스크립트 코딩테스트

프로그래머스 Level 1 - 모의고사 (Javascript)

by 준벨롭 2023. 11. 8.

문제

답안

function solution(answers) {
    var answer = [0,0,0];
    let one = [1,2,3,4,5]
    let two = [2,1,2,3,2,4,2,5];
    let three = [3,3,1,1,2,2,4,4,5,5];
    
    // answer에 맞춘 답의 갯수 넣기
    for(let i = 0; i < answers.length; i++){
        if(answers[i] === one[i%one.length]){
            answer[0]++;
        }
        if(answers[i] === two[i%two.length]){
            answer[1]++;
        }
        if(answers[i] === three[i%three.length]){
            answer[2]++;
        }
    }

    // 정답의 최댓값 구하기
    let max = 0;
    for(let i = 0; i < answer.length; i++){
        if(max < answer[i]){
            max = answer[i];
        } else {
            max = max;
        }
    }
    // rank에 순위 넣기
    let rank = [];
    for(let i = 0; i < answer.length; i++){
        if(answer[i] == max){
            rank.push(i+1);        
        }    
    }
    
    return rank;
}

참고답안

function solution(answers) {
    var answer = [];
    var a1 = [1, 2, 3, 4, 5];
    var a2 = [2, 1, 2, 3, 2, 4, 2, 5];
    var a3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5];

    var a1c = answers.filter((a,i)=> a === a1[i%a1.length]).length;
    var a2c = answers.filter((a,i)=> a === a2[i%a2.length]).length;
    var a3c = answers.filter((a,i)=> a === a3[i%a3.length]).length;
    var max = Math.max(a1c,a2c,a3c);

    if (a1c === max) {answer.push(1)};
    if (a2c === max) {answer.push(2)};
    if (a3c === max) {answer.push(3)};


    return answer;
}

후기

filter, reduce와 같은 배열 메서드에 익숙해져야 하는데 어렵다.

value값과 index값을 이용해서 풀어야 하는 문제가 많아지고 있다.

for문을 사용하는 빈도를 줄여봐야할듯..

728x90