[프로그래머스] 모의고사 (JS)

hhkim·2023년 7월 4일
0

Algorithm - JavaScript

목록 보기
52/188
post-thumbnail

풀이 과정

  1. 각 학생의 패턴을 배열에 저장
  2. 시험 답 배열에 대해 반복: for
  3. 시험 답과 학생의 답 대조: % 나머지 연산자 활용
  4. 점수 배열에 각 학생의 점수 더해나가기: [[1, 0], [2, 0], [3, 0]]
  5. 점수 배열에서 가장 큰 값 찾기: sort()
  6. 가장 큰 값과 동일한 값의 학생 번호만 남기기: filter(), map()

코드

function solution(answers) {
  const students = [
    [1, 2, 3, 4, 5],
    [2, 1, 2, 3, 2, 4, 2, 5],
    [3, 3, 1, 1, 2, 2, 4, 4, 5, 5],
  ];
  const scores = [
    [1, 0],
    [2, 0],
    [3, 0],
  ];
  for (let i = 0; i < answers.length; ++i) {
    for (let j = 0; j < students.length; ++j) {
      if (students[j][i % students[j].length] === answers[i]) {
        scores[j][1] += 1;
      }
    }
  }
  scores.sort((a, b) => b[1] - a[1]);
  const maxScore = scores[0][1];
  return scores
    .filter((e) => e[1] === maxScore)
    .map((e) => e[0])
    .sort((a, b) => a - b);
}

🤔

  • 다 풀고 보니까 너무 어렵게 푼 거 같은 느낌...
  • 다른 사람 풀이 보니까 점수 배열을 굳이 2차원으로 만들 필요가 없고, 나중에 최댓값과 비교하면서 인덱스를 저장하는 배열을 따로 만들면 됐다.
  • 학생의 수가 3명 밖에 되지 않으므로 2중 for문도 굳이 쓸 필요가 없었음

0개의 댓글