본문 바로가기
알고리즘/문제풀이

프로그래머스 모의고사 javascript

by WWIT 2021. 8. 21.

문제링크

https://programmers.co.kr/learn/courses/30/lessons/42840

 

코딩테스트 연습 - 모의고사

수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는

programmers.co.kr

코드

function solution(answers) {

    let answer = [];
    let supo = [
        [1, 2, 3, 4, 5],
        [2, 1, 2, 3, 2, 4, 2, 5],
        [3, 3, 1, 1, 2, 2, 4, 4, 5, 5],
    ];

    let score = [];
    for (let i = 0; i < supo.length; i++) {
        let result = 0;

        for (let j = 0; j < answers.length; j++) {
            supoAnswers = supo[i][j % supo[i].length];

            if (answers[j] === supoAnswers) {
                result++;
            }
        }
        score.push(result);
    }

    for (let i = 0; i < score.length; i++) {
        if (score[i] === Math.max(...score)) {
            answer.push(i + 1);
        }
    }

    return answer;
}

문제풀이

  1. 수포자가 찍는 방식을 배열로 만든다 >> 수포자의 수 만큼 for문을 돌린다
  2. 인덱스의 값(예시>>[1,2,3,4,5])이 반복 되므로 5로 나눈 인덱스 값을 sudoAnwers에 넣고 정답과 비교하면 result 값을 구한다
  3. 수포자들의 맞는 개수를 score 배열에 넣고 최고점과 같을 경우  answer에 넣는다
  4. answer을 반환(return)한다