본문 바로가기
2025 코딩 테스트

[ 프로그래머스 ] JS - 모의고사 (완전탐색)

by 주연배 2025. 1. 8.

문제

풀이

1. 수포자 1, 2, 3이 찍은 수를 각각의 배열로 만들어 저장하기
2. 맞은 문제의 수를 세 줄 cnt 배열을 만든 후 각각 0으로 초기화 한다.
3. for문을 사용해 answers 배열 각각의 값과 수포자 1,2,3 배열의 값이 같을 경우 cnt를 1씩 증가하기
4. 현재 cnt에는 각각 맞은 개수가 들어있다. 여기서 가장 큰 값을 가진 수만 가져와야 된다. 
5. Math.max()를 이용해 cnt배열에서 가장 큰 수를 구한다.
6. for문을 돌려서 cnt 배열에서 위에서 구한 가장 큰 수랑 같은 값일 경우 그 값의 인덱스 + 1을 해 준다.

 

function solution(answers) {
    let answer = [];
    let cnt = [0,0,0];
    
    let first = [1,2,3,4,5];
    let second = [2,1,2,3,2,4,2,5];
    let third = [3,3,1,1,2,2,4,4,5,5];
    
    for(let i=0; i<answers.length; i++){
        if(answers[i] === first[i]) cnt[0]++
        if(answers[i] === second[i]) cnt[1]++
        if(answers[i] === third[i]) cnt[2]++
    }
    let max = Math.max(...cnt); //5, 2
    for(let i=0; i<cnt.length; i++){ //cnt [5,0,0], [2,2,2]
        if(cnt[i] === max) answer.push(i+1)
    }
    return answer;
}