본문 바로가기

알고리즘/test

javascript) 프로그래머스 - 모의고사

https://school.programmers.co.kr/learn/courses/30/lessons/42840?language=javascript 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

실행코드

function calculateScores(patterns, answers) {
    let scores = [];
    for (let i = 0; i < patterns.length; i++) {
        let score = 0;
        for (let j = 0; j < answers.length; j++) {
            let pattern = patterns[i];
            let answer = answers[j];
            if (answer === pattern[j % pattern.length]) {
                score++;
            }
        }
        scores.push(score);
    }
    return scores;
}

function getHighestScorers(scores) {
    let highestScore = Math.max(...scores);
    let highestScorers = [];
    for (let i = 0; i < scores.length; i++) {
        if (scores[i] === highestScore) {
            highestScorers.push(i + 1);
        }
    }
    return highestScorers;
}

function solution(answers) {
    let patterns = [        [1, 2, 3, 4, 5],
        [2, 1, 2, 3, 2, 4, 2, 5],
        [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
    ];
    let scores = calculateScores(patterns, answers);
    return getHighestScorers(scores);
}

풀이

solution(answers) 함수는 정수 답변 그것은 시험에 대한 답변을 나타냅니다. 가장 높은 점수를 받은 사람들의 인덱스를 나타내는 정수 배열을 반환합니다.

함수는 먼저 세 사람의 답변 패턴을 포함하는 patterns라는 배열을 정의합니다. 시험을 치르다. 각 패턴은 시험의 답변을 나타내는 정수 배열입니다.

그런 다음 이 함수는 calculateScores(patterns, answers) 함수를 호출하여 답변 패턴과 답변을 가져옵니다. 시험에 인수로 제출하고 각 사람의 점수를 나타내는 정수 배열을 반환합니다. 함수는 대답 패턴을 반복하고 각 패턴에 대해 대답을 반복하고 패턴과 비교하여 이를 수행합니다.

대답이 패턴과 일치하면 해당 사람의 점수가 증가합니다. 그런 다음 함수는 각 개인의 점수가 포함된 배열을 반환합니다.

그런 다음 점수 배열을 인수로 사용하여 getHighestScorers(scores) 함수가 호출되어 정수 배열을 반환합니다. 가장 높은 점수를 받은 사람들의 지수를 나타냅니다. 함수는 점수 배열에서 가장 높은 점수를 찾은 다음 점수 배열을 반복하고 highestScorers 배열에 가장 높은 점수를 가진 각 사람의 인덱스를 추가하여 이를 수행합니다.

마지막으로 이 함수는 가장 높은 점수를 받은 사람들의 인덱스 배열을 반환합니다.