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

Jo Chang Uk·2024년 5월 29일

1. 문제

문제 링크

2. 풀이

2.1 생각해 볼 만한 케이스

  • 실패율 : 스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수
  • 만약 실패율이 같은 스테이지가 있다면 작은 번호의 스테이지가 먼저 오도록 하면 된다.

2.2 제출 코드

function countFailures(stage, users){
    let cnt = 0
    for(let x of users){
        if(x > stage) return cnt
        else cnt++;
    }
    return cnt
}

function solution(N, stages) {
    var answer = [];
    let userNum = stages.length;
    
    stages = stages.sort((a,b) => a-b);
    
    for(let i = 1; i <= N; i++){
        let fail = countFailures(i, stages)
        answer.push({stage : i, failRate : fail/userNum})
      	// 통과하지 못한 유저 pop
        for(let j = 0; j < fail; j++){
            stages.shift();
            userNum--
        }
    }
    // 실패율로 정렬
    answer = answer.sort((a,b) => b.failRate - a.failRate);
    answer = answer.map(v => v.stage);
    return answer;
}

0개의 댓글