https://programmers.co.kr/learn/courses/30/lessons/42840
function solution(answers) {
var answer = [];
var len = answers.length;
var one = [1, 2, 3, 4, 5,]; //5
var two = [2, 1, 2, 3, 2, 4, 2, 5]; //8
var three = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]; //10
var count = [0,0,0];
var maxNum = 0;
for(var i=0; i<len; i++){
if(answers[i] === one[i%5]){
count[0] = count[0] + 1;
}
if(answers[i] === two[i%8]){
count[1] = count[1] +1;
}
if(answers[i] === three[i%10]){
count[2] = count[2] + 1;
}
}
maxNum = Math.max(...count);
for(var j=0; j<3; j++){
if(count[j] === maxNum){
answer.push(j+1);
}
}
return answer;
}
반복되는 패턴을 수포자의 답 배열 자체가 아니라, 그 index를 기준으로 생각했어야 하는데, 구체적인 숫자의 패턴을 구하려고 하였음. 힌트참고.
function solution(answers) {
var answer = [];
var lengthOfAnswers = answers.length;
var answer1 = [];
var answer2 = [];
var answer3 = [];
var count1 =0;
var count2 =0;
var count3 =0;
var findMax =[];
//일단 answers의 수만큼 각 수포자의 정답 배열설정
for(var i=1; i<=lengthOfAnswers; i++){
if((i%5)!==0){
answer1[i-1] = (i % 5);
} else{
answer1[i-1] = 5;
}
}
for(var j=0; j<lengthOfAnswers; j++){
if((j%8) === 1 ){
answer2[j] = 1;
}else if((j%8) === 3 ){
answer2[j] = 3;
}else if((j%8) === 5 ){
answer2[j] = 4;
}else if((j%8) === 7 ){
answer2[j] = 5;
}else{
answer2[j] = 2;
}
}
for(var x=0; x<lengthOfAnswers; x++){
if(((x%10) === 0) ||((x%10) === 1)){
answer3[x] = 3;
} else if(((x%10) === 2) ||((x%10) === 3)){
answer3[x] = 1;
} else if(((x%10) === 4) ||((x%10) === 5)){
answer3[x] = 2;
} else if(((x%10) === 6) ||((x%10) === 7)){
answer3[x] = 4;
} else {
answer3[x] = 5;
}
}
//정답개수 도출
for( var y=0; y<lengthOfAnswers; y++){
if(answers[y] === answer1[y]){
count1 = count1 +1;
}
if(answers[y] === answer2[y]){
count2 = count2 +1;
}
if(answers[y] === answer3[y]){
count3 = count3 +1;
}
}
//index 1,2,3기준으로 정답개수 배열에 넣기
findMax=[count1, count2, count3];
var max = Math.max(...findMax);
for(var z=0; z<3; z++){
if( findMax[z]===max){
answer.push(z+1);
}
}
return answer;
}
정답 배열을 왜 이렇게 복잡하게 도출했지?