
function solution(answers) {
var answer = [];
//수포자들이 찍는 패턴 저장
let firstStu = [1,2,3,4,5];
let secondStu = [2,1,2,3,2,4,2,5];
let thirdStu = [3,3,1,1,2,2,4,4,5,5];
let count = [0,0,0]; // 학생은 3명이므로 3개의 인덱스를 가진 배열에 저장
for (let i=0; i<answers.length; i++){
//정답과 비교, 순서별 학생과 비교
if(answers[i]===firstStu[i%firstStu.length]){
count[0]++;
}
if(answers[i]===secondStu[i%secondStu.length]){
count[1]++;
}
if(answers[i]===thirdStu[i%thirdStu.length]){
count[2]++;
}
}
// 최대값 구하는 메서드 Math.max사용
const maxScore = Math.max(...count);
//최대값과 count가 일치할경우 answer가 push됨
for (let j = 0; j < count.length; j++){
if (count[j] === maxScore) {
answer.push(j + 1);
}
}
return answer;
}
완전 탐색의 대표적인 문제였다.
완전 탐색이란 문제 상에서 가능한 경우의 수를 일일이 나열하면서 답을 찾는 방법을 의미한다.
'무식하게 푼다'라는 의미인 Brute-Force (브루트 포스)라고도 한다.
패턴을 저장해서 정답과 수포자의 배열 내 index를 일일이 비교하고 일치할 경우 1씩 더하고 그 값을 count 배열에 저장하는 방식으로 풀었다.