문제
출처 프로그래머스
function solution(answers) {
let answer=[];
const A=[1,2,3,4,5]; // 1
const B=[2,1,2,3,2,4,2,5]; // ~
const C=[3,3,1,1,2,2,4,4,5,5]; // 3
const aFilter=answers.filter((answer,idx)=>answer===A[idx%A.length]).length; // 4
const bFilter=answers.filter((answer,idx)=>answer===B[idx%B.length]).length; // ~
const cFilter=answers.filter((answer,idx)=>answer===C[idx%C.length]).length; // 5
const max=Math.max(aFilter,bFilter,cFilter); // 6
if(max===aFilter) answer.push(1); // 7
if(max===bFilter) answer.push(2); // ~
if(max===cFilter) answer.push(3); // 8
return answer;
}
1 ~ 3 번 수포자의 답안지 패턴
4 ~ 5 번 filter
이는 map이나 기타 방법으로도 구현이 가능하지만 filter 함수가 가장 적절하다.
패턴과 일치하면 정답인 경우이므로 정답을 맞춘 배열만 반환을 받게 된다. 그 길이(length)는 답을 맞춘 갯수가 된다.
6 번
Maht.max(1,2,3) // return 3
Math.max 함수를 사용해 가장 정답을 많이 맞춘 사람을 찾는다.7 ~ 8 번
if 문을 통해 가장 정답을 많이 맞춘 사람을 answer.push 해준다.
문제를 풀면서 곤란했던 점 : 문제를 잘못읽어 최대 정답자만 찾는 게 아니라 정답을 많이 맞춘 순서대로 정렬하는 줄 알았다. 뭔가 안풀린다 했다.
오늘의 교훈: 뭔가 막히면 문제를 다시 잘 읽어보자