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번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작성해주세요.
function solution(answers) {
let oneRef = [1, 2, 3, 4, 5];
let twoRef = [2, 1, 2, 3, 2, 4, 2, 5];
let threeRef = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5];
let count = [0, 0, 0];
let answer = [];
answers.forEach((e, i) => {
if (e === oneRef[i % 5]) {
count[0] += 1;
}
if (e === twoRef[i % 8]) {
count[1] += 1;
}
if (e === threeRef[i % 10]) {
count[2] += 1;
}
});
// 가장 많이 맞춘 사람
let compare = Math.max(...count);
for (let i = 0; i < 3; i++) {
if (count[i] === compare) {
answer.push(i + 1);
}
}
return answer;
}
function solution(answers) {
const answer = [];
const firstPattern = [1, 2, 3, 4, 5];
const firstPLength = firstPattern.length;
const secondPattern = [2, 1, 2, 3, 2, 4, 2, 5];
const secondPLength = secondPattern.length;
const thirdPattern = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5];
const thirdLength = thirdPattern.length;
let correctCount = [0, 0, 0];
for (let i = 0, len = answers.length; i < len; i++) {
if (answers[i] === firstPattern[i % firstPLength]) correctCount[0] += 1;
if (answers[i] === secondPattern[i % secondPLength]) correctCount[1] += 1;
if (answers[i] === thirdPattern[i % thirdLength]) correctCount[2] += 1;
}
const maxScore = Math.max(...correctCount);
for (let i = 0; i < 3; i++) {
if (correctCount[i] === maxScore) answer.push(i + 1);
}
return answer;
}