지난 풀이 참고
curStage
배열에 연속해서 숫자를 저장한다.curStage
배열의 길이를 남은 플레이어들의 수 (주어진 배열의 길이)로 나눠서 실패율을 구한다.function solution(N, stages) {
var answer = [];
const sortedStages = stages.sort((a,b) => a-b);
const stagesCopy = sortedStages.slice(0);
let curStage = [];
let failRate = 0;
let players = stagesCopy.length;
const obj = {};
let stage = 1;
for(let i = 0; i < stagesCopy.length; i++) {
if(stagesCopy[i] === stagesCopy[i+1]) curStage.push(stagesCopy[i]);
else {
curStage.push(stagesCopy[i]);
failRate = curStage.length/players;
stage = curStage[0];
if(stage > N) {
failRate = 0;
}
obj[stage] = failRate;
players -= curStage.length;
curStage = [];
}
}
for(let i = 1; i <= N; i++) {
if(obj[i] === undefined) {
obj[i] = 0;
}
}
let sortObj = [];
for(let number in obj) {
sortObj.push([number, obj[number]]);
}
sortObj.sort((a,b) => {
return b[1] - a[1];
});
for(let i = 0; i < sortObj.length; i++) {
answer.push(Number(sortObj[i][0]));
}
if(answer[answer.length-1] > N) answer.pop();
return answer;
}