나의 풀이 방법:function solution(answers) {
let answer = [];
let oneAns = [1, 2, 3, 4, 5];
let twoAns = [2, 1, 2, 3, 2, 4, 2, 5];
let threeAns = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5];
let count = [0, 0, 0];
answers.forEach((v, i) => {
let index = i % oneAns.length;
if (v === oneAns[index]) count[0]++;
index = i % twoAns.length;
if (v === twoAns[index]) count[1]++;
index = i % threeAns.length;
if (v === threeAns[index]) count[2]++;
threeAns[index]
})
let max = Math.max(...count);
if (count[0] === max) answer.push(1);
if (count[1] === max) answer.push(2);
if (count[2] === max) answer.push(3);
return answer;
}
최적 풀이 방법:function solution(answers) {
var answer = [];
var a1 = [1, 2, 3, 4, 5];
var a2 = [2, 1, 2, 3, 2, 4, 2, 5]
var a3 = [ 3, 3, 1, 1, 2, 2, 4, 4, 5, 5];
var a1c = answers.filter((a,i)=> a === a1[i%a1.length]).length;
var a2c = answers.filter((a,i)=> a === a2[i%a2.length]).length;
var a3c = answers.filter((a,i)=> a === a3[i%a3.length]).length;
var max = Math.max(a1c,a2c,a3c);
if (a1c === max) {answer.push(1)};
if (a2c === max) {answer.push(2)};
if (a3c === max) {answer.push(3)};
return answer;
}
- answer빈 배열을 만든다.
- a1, a2, a3각 배열에 찍는 돌리는 정답을 넣는다.
- answer을 filter()로 검사하여 각 수포자가 몇 개 맞혔는지 계산한다.
- Math.max로 최대값을 찾는다.
- 최대값을 가진 수포자들을 answer 배열에 저장 후 반환한다.