완전탐색 - 모의고사
https://programmers.co.kr/learn/courses/30/lessons/42840
수포자 1,2,3의 답안 찍기 배열에는 반복 구간이 있다.
answers 배열과 수포자 1,2,3의 찍기 배열를 비교하여 (인덱스 = 문제 번호로 삼고) 동일한 요소의 개수를 구하면 각 수포자들의 맞은 문제 개수를 구할 수 있다.
가장 많이 맞은 개수를 구하고 해당 수포자를 배열에 넣어 리턴해준다.
function solution(answers) {
const answer = [];
const check1 = [1, 2, 3, 4, 5];
const check2 = [2, 1, 2, 3, 2, 4, 2, 5];
const check3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5];
const an1 = answers.filter((v, idx) => v === check1[idx % 5]).length; // 수포자의 정답과 answers 정답과 일치하는 요소의 개수 구하기
const an2 = answers.filter((v, idx) => v === check2[idx % 8]).length;
const an3 = answers.filter((v, idx) => v === check3[idx % 10]).length;
const max = Math.max(an1, an2, an3); // 가장 많이 맞은 개수 구하기
if (max === an1) answer.push(1);
if (max === an2) answer.push(2);
if (max === an3) answer.push(3);
return answer;
}
가장 많이 맞은 개수를 구하고나서 수포자 번호와 어떻게 연결시켜서 리턴해야 고민했는데 그냥 push(1) 처럼 배열에 하나씩 넣어서 리턴해주면 되는거였...
수포자가 3명밖에 없어서 이렇게 풀어도 될거같지만 수포자가 너무 늘어나면 별로 좋은 코드는 아닌거같긴하다