function solution(N, stages) {
var answer = [];
let len = stages.length
let fails = {};
for(let i=1; i<=N;i++)
{
const res = stages.filter((stage) => stage == i );
fails = {...fails, [i]: res.length/len},
len-=res.length;
}
const sortable = Object.entries(fails)
.sort(([, a], [, b]) => b - a)
for(let i=0;i<sortable.length;i++)
answer.push(Number.parseInt(sortable[i][0]))
return answer;
}
Javascript의 filter
를 사용해 현 단계에 있는 사람들의 수를 구하고 실패율과 단계를 fails
라는 object
에 전개 연산자를 사용해 넣어주었다. 그 다음 object의 2번째 값으로 정렬을 해야하는데 쉬운 방법이 있는지 찾아보다가 Object.entries
를 사용해 object
들을 순회하면서 두번째 값으로 비교하는 방법이 있었다. 참고로 [,a]
는 앞에 값(key)을 사용하지 않으므로 공백으로 두는 것이다. 그리고 fails에 단계가 문자열로 저장되서 숫자로 치환해서 해결하였다.