쉬운 문제이기 때문에 논리적인 풀이보다는 객체지향적인 풀이에 집중하였다.
function solution(answers) {
let answerCnt = [0, 0, 0];
let result = [];
function firstPeople(index){
return index % 5 + 1;
}
function secondPeople(index){
if(index % 2 === 0) {
return 2;
}
switch(index % 8){
case 1:
return 1;
case 3:
return 3;
case 5:
return 4;
case 7:
return 5;
}
}
function thirdPeople(index){
index %= 10;
index = Math.floor(index/2);
console.log(`index: ${index}`);
switch(index){
case 0:
return 3;
case 1:
return 1;
case 2:
return 2;
case 3:
return 4;
case 4:
return 5;
}
}
function findMax(cnt){
let max = Math.max.apply(null, cnt);
return max;
}
for(let i = 0; i < answers.length; i++) {
if(answers[i] === firstPeople(i)){
answerCnt[0]++;
}
if(answers[i] === secondPeople(i)){
answerCnt[1]++;
}
if(answers[i] === thirdPeople(i)){
answerCnt[2]++;
}
console.log(answers[i], thirdPeople(i));
}
console.log(answerCnt);
for(let j = 0; j < answerCnt.length; j++){
if(answerCnt[j] === findMax(answerCnt)){
result.push(j+1);
}
}
return result;
}
패턴을 배열 형태로 전부 저장하고 filter를 사용하여 각 수포자가 맞춘 정답 수를 측정하였다. 정답 수 중 가장 큰 값을 Math api를 통해 구하였다.
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];
// 과정 1
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;
// 과정 2
var max = Math.max(a1c,a2c,a3c);
// 과정 3
if (a1c === max) {answer.push(1)};
if (a2c === max) {answer.push(2)};
if (a3c === max) {answer.push(3)};
return answer;
}