본문 바로가기
배움 기록/코테 연습

[프로그래머스] 모의고사 : JavaScript

by dygreen 2025. 3. 29.
반응형

📌 문제

 

📌 풀이

function solution(answers) {
    const obj = {};
    const score1 = [1, 2, 3, 4, 5];
    const score2 = [2, 1, 2, 3, 2, 4, 2, 5];
    const score3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5];
    
    answers.forEach((v, i) => {
        if (v === score1[i % score1.length]) {
            obj[1] = (obj[1] || 0) + 1;
        }
        if (v === score2[i % score2.length]) {
            obj[2] = (obj[2] || 0) + 1;
        }
        if (v === score3[i % score3.length]) {
            obj[3] = (obj[3] || 0) + 1;
        }
    })
    const max = Math.max(...Object.values(obj));
    const result = Object.keys(obj)
      .filter(key => obj[key] === max)
      .map(Number)
      .sort((a, b) => a - b);
    
    return result;
}
  • 각 수포자의 패턴을 배열로 정의한다
  • 주어진 answers 배열의 각 문제 답이 수포자의 패턴 답과 일치할 경우 해당 수포자의 점수를 증가시킨다
    * 수포자 패턴의 길이가 정답(answers) 배열보다 짧을 수 있으므로, 각 패턴의 길이로 나눈 나머지를 이용해 문제 번호에 접근하면 된다
  • 최고 점수를 가진 수포자를 찾아서 배열에 넣는다 (Object.values, Object.keys 활용)
  • 동일한 점수를 가졌을 경우를 고려해, sort() 를 통해 오름차순으로 정렬한 후 반환한다

 

 

728x90

댓글