모의고사

원지렁·2023년 3월 19일
0

알고리즘 정복기

목록 보기
7/12
post-thumbnail

모의고사

문제

학생 1,2,3이 문제를 찍는 방식이 아래와 같이 주어지고 정답 배열 answers가 주어졌을 때 가장 많이 정답을 맞춘 학생을 리턴해야 함.

1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ...
2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ...
3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ...

문제의 핵심

1) 학생마다 반복되는 기본패턴을 배열에 넣는다
2) 반복되는 패턴이 종료되면 나머지 연산자(%)를 통해 처음으로 돌아갈 수 있도록 함

  • 나의 풀이
function solution(answers) {
    let arr1 = [1,2,3,4,5];
    let arr2 = [2,1,2,3,2,4,2,5];
    let arr3 = [3,3,1,1,2,2,4,4,5,5];
    let result = [0,0,0];
    let answer = [];

    for(let i = 0; i < answers.length; i++){
        if(answers[i] === arr1[i % arr1.length]){
            result[0]++
        }
        if(answers[i] === arr2[i % arr2.length]){
            result[1]++
        }
        if(answers[i] === arr3[i % arr3.length]){
            result[2]++
        }
    }
   
    const max = Math.max(...result);
    for(let k = 0; k < result.length; k++){
        if(result[k] === max){
            answer.push(k+1);
        }
    }
    return answer;
}
profile
새싹 개발자 지렁이의 벨로그입니다.

0개의 댓글