모의고사 - 프로그래머스 알고리즘 연습 js

YOUNGJOO-YOON·2021년 6월 28일
0

알고리즘

목록 보기
1/12

문제
출처 프로그래머스

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

  • 4 ~ 5번은 filter 함수를 사용해 입력되는 answers를 순회하면서 주어진 조건이 참인 경우를 모은 배열을 반환받아 그 길이를 *Filter에 저장한다.

이는 map이나 기타 방법으로도 구현이 가능하지만 filter 함수가 가장 적절하다.
패턴과 일치하면 정답인 경우이므로 정답을 맞춘 배열만 반환을 받게 된다. 그 길이(length)는 답을 맞춘 갯수가 된다.

6 번

  • Maht.max(1,2,3) // return 3 Math.max 함수를 사용해 가장 정답을 많이 맞춘 사람을 찾는다.

7 ~ 8 번

  • if 문을 통해 가장 정답을 많이 맞춘 사람을 answer.push 해준다.
  • 문제를 풀면서 곤란했던 점 : 문제를 잘못읽어 최대 정답자만 찾는 게 아니라 정답을 많이 맞춘 순서대로 정렬하는 줄 알았다. 뭔가 안풀린다 했다.

  • 오늘의 교훈: 뭔가 막히면 문제를 다시 잘 읽어보자

profile
이 블로그의 글은 제 생각을 정리한 글과 인터넷 어딘가에서 배운 것을 정리한 글입니다. 출처는 되도록 남기도록 하겠습니다. 수정 및 건의 오류 등이 있으면 언제든지 댓글 부탁드립니다.

0개의 댓글