https://programmers.co.kr/learn/courses/30/lessons/42889
// 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수
function solution(N, stages) {
let answer = [];
let arr = [];
let len = stages.length;
for (let i = 1; i <= N; i++) {
let stageNum = stages.filter(el => el == i).length;
let fail = 0;
stageNum == 0 ? fail = 0 : fail = stageNum / len;
len -= stageNum;
arr.push({ i,fail});
}
// console.log(`before : ${JSON.stringify(arr)}`);
arr.sort((a, b) => {
return b.fail-a.fail
})
// console.log(arr);
answer = arr.map(el => el.i);
return answer;
}
let N = 5;
let stages = [2, 1, 2, 6, 2, 4, 3, 3];
console.log(solution(N, stages));
처음에 문제를 잘못 이해해서 해맷었다. 다 구현하고나서 답이 이상하길레 ??? 하다가 다시 다지우고 처음부터 다시 천천히 작성했다.(ㅜㅜ)
먼저 해당 스테이지에 머물러 있는 사람의 수를 filter를 이용하여 구하고,
없으면 fail=0, 아니라면 실패율을 계산한다.
그리고 전체 길이에서 해당 스테이지에 머물러있는 사람들수를 빼주고,
arr에다가 스테이지와 실패율을 저장해준다.
그 다음 문제에서 실패율이 높은 스테이지부터 내림차순으로 스테이지의 번호가 담겨있는 배열을 return 하도록 solution 함수를 완성하라고 하였다.
arr을 실패율이 큰거부터 정렬해준다.
그 후 answer에 map을 이용하여 key값(스테이지)을 순서대로 넣어준다.