Lv 1. 모의고사

박하린·2021년 6월 6일
0

프로그래머스

목록 보기
22/42

📚 문제

완전탐색 - 모의고사
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명밖에 없어서 이렇게 풀어도 될거같지만 수포자가 너무 늘어나면 별로 좋은 코드는 아닌거같긴하다

profile
깃허브: https://github.com/khakaa

0개의 댓글

관련 채용 정보