프로그래머스 완전탐색 모의고사 문제
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명을 출력해야한다는 예외만 잘 처리 해주면 어렵지 않게 해결 할 수 있다.