본문 바로가기

프로그래머스/JavaScript

[프로그래머스 JavaScript] Level1 실패율

 

function solution(N, stages) {
    var answer = [];
    var status = [];
    let users = stages.length;
    
    for (let i = 0; i < N; i++) {
        let tried = stages.filter(e => i < e).length;
        let stay = stages.filter(e => i+1 == e).length;
        let fail = stay / tried;
        status.push({stage: i + 1, fail: fail});
        status.sort((a, b) => b.fail - a.fail);
    }
    
    for (let i = 0; i < N; i++){
        answer.push(status[i].stage);
    }
    
    return answer;
}

테스트 케이스로는 위의 코드로 실패율이 같을 경우,

알아서 작은 번호의 스테이지 먼저 정렬되는것 같으나 코드로 그런 조건을 넣어주지 않았어

실패율이 같다면 작은 번호의 스페이지 먼저 정렬하는 것을 추가

function solution(N, stages) {
    var answer = [];
    var status = [];
    let users = stages.length;
    
    for (let i = 0; i < N; i++) {
        let tried = stages.filter(e => i < e).length;
        let stay = stages.filter(e => i+1 == e).length;
        let fail = tried == 0 || stay == 0  ? 0 : stay / tried;
        status.push({stage: i + 1, tried: tried, stay: stay, fail: fail});
        status.sort((a, b) => {
            if (a.fail === b.fail) {
                return a.stage - b.stage;
            } else {
                return b.fail - a.fail;
            }
        });
    }
    
    for (let i = 0; i < N; i++){
        answer.push(status[i].stage);
    }
    
    return answer;
}