1.for문
function solution(N, stages) {
// 각각의 스테이지의 스테이지 번호, 실패율, 실패한 유저의 수를 저장
const infos = [];
for (let i = 1; i<= N; i++){
infos.push({
stage: i, //스테이지 번호
users: 0, //해당스테이지에 머물러있는 유저의 수
fail: 0, //해당스테이지의 실패율
})
}
let allUsers = stages.length; //전체 유저의수를 저장
for (let i = 0; i < stages.length; i++){
if(infos[stages[i]-1]){
infos[ stages[i]-1 ].users++
//현재 스ㅔ이지의 번호와 다음 스테이지의 번호가 동일하지 않을 때
//현재 스테이지의 합산이 끝나는 시점
if(stages[i] !== stages[i+1]){
// console.log(stages[i], infos[stages[i]-1],allUsers)
infos[stages[i]-1].fail = infos[stages[i]-1].users / allUsers;
allUsers -= infos[stages[i]-1].users;
}
// console.log(stages[i], stages[i+1])
}
// console.log( stages[i],infos[stages[i] -1] )
}
return infos.sort((a,b) =>a.fail > b.fail ? -1 : 1)
.map(el => el.stage)
}
2.메서드