03. 프로그래머스(1단계) - 모의고사

성훈·2021년 7월 27일
0

Algorithm

목록 보기
3/61
post-thumbnail

📌 문제의 조건

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, ...

함수의 인자로 답안을 배열 형식으로 받는다.
이때 누가 가장 많이 맞추는지 배열 안에 담아서 반환하라.

제한사항 🤔

  • 시험은 최대 10,000 문제로 구성되어있습니다.
  • 문제의 정답은 1, 2, 3, 4, 5중 하나입니다.
  • 가장 높은 점수를 받은 사람이 여럿일 경우, return하는 값을 오름차순 정렬해주세요.

📌 풀이

function solution(answers) {
    const makeAnswers = (arr) =>{
        let count = 0;
        for(let i = 0; i < answers.length; i++){
        if(arr[i%arr.length] === answers[i]){
            count++
            }
        }
        return count;
    }    
    
    const first = [1, 2, 3, 4, 5];
    const second = [2, 1, 2, 3, 2, 4, 2, 5];
    const third = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5];
    
    const score = [0,0,0];
    
    score[0] = makeAnswers(first)
    score[1] = makeAnswers(second)
    score[2] = makeAnswers(third)
    
    const result = [];
    for(let i = 0; i < 3; i++){
        if(score[i] === Math.max(...score)){
            result.push(i+1);
        }
            
    }
    
    return result;
}

📌 리뷰

함수내에 수포자의 정답패턴이 담긴 행렬을 인자로 넣으면 정답과 비교해 몇개가 맞았는지 반환하는 함수를 만들고 점수가 담긴 한 배열에 담아줬다.

그리고 가장 큰 수를 찾아서 해당 인덱스에 1을 더한 수를 정답 배열에 푸시하고 해당 정답배열을 반환한다.

📌 문제 출처

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges#

profile
어떻게 이걸 풀어낼 수 있을까

0개의 댓글