1. 문제
문제 링크
2. 풀이
2.1 생각해 볼 만한 케이스
- 실패율 : 스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수
- 만약 실패율이 같은 스테이지가 있다면 작은 번호의 스테이지가 먼저 오도록 하면 된다.
2.2 제출 코드
function countFailures(stage, users){
let cnt = 0
for(let x of users){
if(x > stage) return cnt
else cnt++;
}
return cnt
}
function solution(N, stages) {
var answer = [];
let userNum = stages.length;
stages = stages.sort((a,b) => a-b);
for(let i = 1; i <= N; i++){
let fail = countFailures(i, stages)
answer.push({stage : i, failRate : fail/userNum})
for(let j = 0; j < fail; j++){
stages.shift();
userNum--
}
}
answer = answer.sort((a,b) => b.failRate - a.failRate);
answer = answer.map(v => v.stage);
return answer;
}