풀이
- 1번 수포자는 1,2,3,4,5가 반복 / 2번은 2,1,2,3,2,4,2,5가 반복 / 3번은 3,3,1,1,2,2,4,4,5,5가 반복한다.
- 수포자들의 정답배열을 만든다.
- 각 수포자들의 배열에서, i % 각 배열의 길이의 배열값을 구한다.
(반복되니 i % 각 배열의 길이를 하면 반복되는 배열에서 계속해서 돌 수 있음)
- 배열값이 정답과 일치하면 해당 수포자의 정답 카운트를 ++해준다.
- cnt를 비교해서, 가장 높은 수포자를 []안에 담아 return한다.
코드
function solution(answers) {
let answer = [];
let [cnt1,cnt2,cnt3] = [0,0,0];
const supo1 = [1,2,3,4,5];
const supo2 = [2,1,2,3,2,4,2,5];
const supo3 = [3,3,1,1,2,2,4,4,5,5];
answers.forEach((answer,index)=>{
if(supo1[index % supo1.length] === answer) cnt1++;
if(supo2[index % supo2.length] === answer) cnt2++;
if(supo3[index % supo3.length] === answer) cnt3++;
})
const first = Math.max(cnt1,cnt2,cnt3);
if(first === cnt1) answer.push(1)
if(first === cnt2) answer.push(2)
if(first === cnt3) answer.push(3)
return answer
}