function solution(N, stages) {
// 스테이지 도달 선수가 없을 경우
if (stages.length === 0) return [0]
else {
let answer = Array(N).fill(0)
let res = []
let idx = 1
while (idx !== N + 1) {
//분자
let first = stages.filter((v) => v === idx).length
//분모
let second = stages.filter((v) => v >= idx).length
let failRate = first / second
// 0 / 0 의 연산이 있는 경우 NaN 예외 처리
if (isNaN(failRate)) failRate = 0
answer[idx - 1] = failRate
idx++
}
while (res.length !== N) {
let maxNum = Math.max(...answer)
let indexMax = answer.indexOf(maxNum)
answer[indexMax] = -1
res.push(indexMax + 1)
}
if (res.length > 0) answer = []
return res
}
}
// solution(5, [2, 1, 2, 6, 2, 4, 3, 3])
// solution(4, [4, 4, 4, 4])
solution(5, [1, 2, 2, 1, 3])
각각 인덱스마다의 실패율을 구하고 가장 큰 값부터 차례대로 res
배열에 담는다.
✓ 한번 70점이 나왔는데 이유는 중간에 0 / 0
연산예외처리를 하지 않아서였다.