문제
- 학생 3명이 있고 각각 찍는 방법이 각각 다르고 그중 누가 제일 잘찍는지 확인하는 문제
해결 방법
- 학생3명 찍는 방법 배열과 정답 리스트를 비교하면서 학생마다 맞힌 정답 배열길이를 새로운 배열에 push
- 그 결과를 Math.max함수를 사용 제일 큰수(제일 많이 맞힌갯수) 구한다.
- 위 두정보를 가지고 제일 많이 맞힌 학생을 구한다.
STEP
- STEP1: 학생별 찍어서 맞은 정답 arr
- STEP2: Math.max
- STEP3: map, filter 함수를 적절하게 사용하여 제일 잘 찍은 학생을 구한다.
CODE
function solution(answerList) {
let answer = []
const stdPick1 = [1, 2, 3, 4, 5]
const stdPick2 = [2, 1, 2, 3, 2, 4, 2, 5]
const stdPick3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
//STEP1
let std1Result = answerList.filter(
(v, i) => v === stdPick1[i % stdPick1.length]
)
let std2Result = answerList.filter(
(v, i) => v === stdPick2[i % stdPick2.length]
)
let std3Result = answerList.filter(
(v, i) => v === stdPick3[i % stdPick3.length]
)
const stdResult = []
stdResult.push(std1Result.length)
stdResult.push(std2Result.length)
stdResult.push(std3Result.length)
//STEP2
const maxValue = Math.max(...stdResult)
if (maxValue === 0) {
answer = [0, 0, 0]
} else {
//STEP3
answer = stdResult
.map((v, i) => {
return { std: i + 1, score: v }
})
.filter(v => v.score === maxValue)
.map(v => v.std)
.sort()
}
return answer
}
console.log(solution([1, 2, 3, 4, 5]))
console.log(solution([1, 3, 2, 4, 2]))
console.log(
solution([3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5])
)
정답
[1][1,2,3] [3]