프로그래머스로도 코딩테스트를 준비하고자 풀어보았다.
function solution(answers) {
var answer = [];
let result = [0, 0, 0];
const p1 = [1, 2, 3, 4, 5];
const p2 = [2, 1, 2, 3, 2, 4, 2, 5];
const p3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5];
for (let i=0; i<answers.length; i++) {
if (answers[i] === p1[i%5]) {
result[0]++;
}
if (answers[i] === p2[i%8]) {
result[1]++;
}
if (answers[i] === p3[i%10]) {
result[2]++;
}
}
for (let i=0; i<3; i++) {
if (result[i] === Math.max(...result)) {
answer.push(i+1);
}
}
return answer;
}
단순 구현 문제인데 꽤나 오래 걸렸다...😒
수포자들의 반복적인 배열을 직접 구현하려다가 바보 같은 짓이라는 것을 깨달았다.
매개변수로 받은 answers
와 비교해서 맞으면 해당 count 올려주기. 이 부분에서 나머지 연산자를 사용해서 반복을 구현해준다. 1번에서 바보 같은 짓을 할 필요가 없는 이유.
max 값만 찾으면 되는 것이 아니고 그 인덱스를 결과로 내야하고, 중복이 있으면 오름차순으로 모두 결과로 내야한다.
이 과정에서도 또 복잡...했는데 수포자가 3명 밖에 없으니 하나하나 다 비교했다.