function solution(answers){
let answer = [];
let first = [1, 2, 3, 4, 5];
let second = [2, 1, 2, 3, 2, 4, 2, 5];
let third = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5];
let f_cnt = 0;
let s_cnt = 0;
let t_cnt = 0;
for (let i = 0; i < answers.length; i++){
if (first[i % first.length] === answers[i]){
f_cnt++;
}
if (second[i % second.length] === answers[i]){
s_cnt++;
}
if (third[i % third.length] === answers[i]){
t_cnt++;
}
}
let max_cnt = Math.max(f_cnt, s_cnt, t_cnt);
if (max_cnt === f_cnt){answer.push(1)};
if (max_cnt === s_cnt){answer.push(2)};
if (max_cnt === t_cnt){answer.push(3)};
return answer;
}
for문을 돌려 각 수포자의 반복되는 수의 배열의 index값과 answers.length를 나누어 수포자 배열의 값을 순환하여 answers의 원소값과 비교하였다.
max_cnt는 세 수포자 중 가장 많이 맞은 갯수이다. max_cnt와 각각의 수포자의 맞은 갯수에 대해서 그 값이 같으면 answer에 1, 2, 3을 각각 push하였다.
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;
}
array.filter()는 현재 배열에 대해서 특정 조건을 만족하는 새로운 배열을 만들고 싶을 때 사용한다.
Array.prototype.filter ( callbackfn [ , thisArg ] )
filter를 사용하는 방법은 callbackfn을 통해 주어진 3개의 인자(요소 값, index, 순회하는 대상 객체)를 사용해 Boolean 값인 true 또는 false 값을 반환하는 함수를 등록한다.
const numbers = [1];
numbers.filter((number, index, source) => {
// number: 요소값
// index: source에서 요소의 index
// source: 순회하는 대상
console.log(number);
// 1
console.log(index);
// 0
console.log(source);
// [1]
return number > 3;
});
var a1c = answers.filter((a,i)=> a === a1[i%a1.length]).length;
(a,i)는 순서대로 (배열의 원소, 원소의 인덱스)이다. 이에 대해서 a(배열의 원소)가 a1[i%a1.length] 값과 같은 원소에 대해서 배열을 다시 만든다. 그리고 마지막으로 .length를 통해서 값이 같은 원소가 몇 개인지 반환한다. filter를 사용하였기 때문에 내가 사용하였던 불필요한 코드(변수 선언, for문)을 획기적으로 줄인 코드라고 할 수 있다.
Array Filter 참고 블로그
https://7942yongdae.tistory.com/49