// N : 최대 스테이지
// stages : 플레이어들이 현재 어떤 스테이지에 있는 지 담긴 배열
// N까지 반복문을 돌면서 각 스테이지를 얼만큼 넘겼나 확인 객체 값으로 담기
let arr = [];
let dropout = [];
let result = [];
function solution(N, stages) {
for (let i = 0; i < N; i++){
arr = stages.filter((el) => el <= (i + 1));
dropout = stages.filter((el) => el <= i);
curStage = stages.filter((el) => el >= (i + 1));
result.push([i + 1, (arr.length - dropout.length) / curStage.length])
}
result.sort((a, b) => b[1] - a[1]);
return result.map((el) => el[0]);
}
반복문을 돌면서 각 스테이지에 몇 명이 통과했는지 체크
arr
: 해당 스테이지 이전 스테이지를 플레이하고 있는 사람
dropout
: 해당 스테이지에 아직 도달 못한 사람을 제외하기 위한 변수
curStage
: 해당 스테이지를 클리어한 사람
result
: (arr - dropout) / curStage
function solution(N, stages) {
for (let i = 0; i < N; i++){
arr = stages.filter((el) => el <= (i + 1));
dropout = stages.filter((el) => el <= i);
curStage = stages.filter((el) => el >= (i + 1));
result.push([i + 1, (arr.length - dropout.length) / curStage.length])
내림차순 sort
result.sort((a, b) => b[1] - a[1]);
map 메서드이용 스테이지가 담긴 0번째 인덱스만 추출
return result.map((el) => el[0]);
stages.filter((el) => el === i)
로 해당 스테이지에const result = [];
function solution(N, stages) {
for (let i = 1; i <= N; i++){
let curStage = stages.filter((el) => el === i).length;
let passStage = stages.filter((el) => el >= i).length;
result.push([i, (curStage / passStage)])
}
result.sort((a, b) => b[1] - a[1]);
return result.map((el) => el[0]);
}
curStage
: 현재 스테이지에 도전중인 인원 수 => 도달했지만 클리어는 못 함 (실패)
passStage
: 현재 스테이지 클리어한 인원 수
실패율
: curStage
/ passStage
result
: [스테이지, 실패율]
let curStage = stages.filter((el) => el === i).length;
let passStage = stages.filter((el) => el >= i).length;
이후 sort, map 풀이는 위와 같음