개발 블로그

[프로그래머스/Javascript/Brute Force] 모의고사 본문

IT/Programmers

[프로그래머스/Javascript/Brute Force] 모의고사

파티에 2021. 4. 12. 23:26

1. 문제 설명(출처: programmers.co.kr/learn/courses/30/lessons/42840)

2. 문제 풀이
1) 수포자들의 반복 패턴을 통해서 각각의 배열을 만든다.
2) 수포자들의 반복패턴과 입력값 answers를 순서대로 비교하며 아래 명령을 반복한다.
   2-1) 수포자1이 맞춘 문제 갯수를 grades[0]에 추가한다.
   2-2) 수포자2이 맞춘 문제 갯수를 grades[1]에 추가한다.
   2-3) 수포자3이 맞춘 문제 갯수를 grades[2]에 추가한다.
3) 3명의 수포자들 중에 가장 문제를 많이 맞춘 수포자를 찾는다.
4) 가장 문제를 많이 맞춘 수포자와 동점자를 찾을 뒤, 그 수포자의 번호를 반환한다.

3. 결과 코드

function solution(answers) {
  const arr1 = [1, 2, 3, 4, 5];
  const arr2 = [2, 1, 2, 3, 2, 4, 2, 5];
  const arr3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5];

  let grades = [0,0,0];
  for(let i = 0; i < answers.length; i++){
      if(answers[i] === arr1[i % 5])
          grades[0]++;
      if(answers[i] === arr2[i % 8])
          grades[1]++;
      if(answers[i] === arr3[i % 10])
          grades[2]++;
  }

  let max_grade = Math.max(...grades);
  return grades
    .map((g, i) => { if(g === max_grade) return i+1 })
    .filter(e => e != undefined);
}