코딩테스트- 모의고사

허원영·2022년 1월 19일
0
post-thumbnail

프로그래머스 완전탐색 모의고사 문제

레벨: 1

언어: JavaScript


문제요약

1번: 1, 2, 3, 4, 5

2번: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1...

3번: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5 ,3,3 ....
으로 정답을 찍는다고 한다.
이때 들어오는 모의고사의 정답과 비교하여 가장 많이 정답을 맞춘 정답자를 반환해라
문제풀러가기

입력값

  • 숫자 배열, 모의고사 정답이 숫자 배열로 들어옴

출력값

  • 숫자 배열, 가장 많이 정답을 맞춘 사람

📑풀이 아이디어

각 사람의 정답을 배열에 저장한다.
정답배열과 비교하여 정답 맞춘 수를 카운딩하여 저장한다.

📋풀이코드

function solution(answers) {
  let answer = [];
  let maxCount = 0
  let students = {
    1:{
      checkAnswer : [1,2,3,4,5],
      count : 0,
      index: 0            
    },
    2:{
      checkAnswer : [2, 1, 2, 3, 2, 4, 2, 5],
      count : 0,
      index: 0
    },
    3:{
      checkAnswer : [3, 3, 1, 1, 2, 2, 4, 4, 5, 5],
      count : 0,
      index: 0
    }
  }

  answers.map((num) =>{
    for(const key in students){
      if(students[key].checkAnswer[students[key].index++] === num){
        students[key].count +=1

        if(students[key].count>maxCount){
          maxCount = students[key].count;
        }
      }
      if(students[key].index === students[key].checkAnswer.length){
        students[key].index = 0
      }
    }
  })

  for(const key in students){
    if(students[key].count === maxCount){
      answer.push(+key)
    }
  }
  console.log(students)

  return answer.sort((a,b)=>a-b);
}

이 문제는 어떻게든 돌려서 정답을 많이 맞춘 사람을 찾는거라 어렵지 않다.
정답을 모두 틀렸을 경우 최고가 0개이고 그럼 3명다 최고 점수 임으로로 3명을 출력해야한다는 예외만 잘 처리 해주면 어렵지 않게 해결 할 수 있다.

profile
1년차 개발자

0개의 댓글