문제

제한 사항

입출력 예

풀이
function solution(answers) {
let ans = {};
let p1 = [1, 2, 3, 4, 5];
let p2 = [2, 1, 2, 3, 2, 4, 2, 5];
let p3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5];
const ansSheet = [p1, p2, p3];
for (let i = 1; i <= 3; i++) {
let curSheet = ansSheet.shift();
let score = answers.filter(
(e, i) => e === curSheet[i % curSheet.length]
).length;
ans[i] = score;
}
const max = Math.max(...Object.values(ans));
const answer = [];
for (let [key, values] of Object.entries(ans)) {
if (values === max) {
answer.push(+key);
}
}
return answer.sort((a, b) => a - b);
}
- 수포자의 패턴을 넣은 배열을 ansSheet(답안지)배열에 넣었다.
- 1부터 3까지 반복문을 돌면서 score를 구해줬다. 이때 answers의 길이보다 curSheet의 길이가 긴 경우를 어떻게 해결해야할지 고민하다가 길이로 나눈 나머지를 사용하면 깨달았다.
- 객체에 정리한 후 최대값을 구해서 최대값과 같은 value를 가진 key를 return 했다.