CodingSpace

프로그래머스#53(Lv.1)_실패율 본문

프로그래머스/Level1

프로그래머스#53(Lv.1)_실패율

개발자_조이킴 2021. 11. 8. 23:58

실패율 - 2019 KAKAO BLIND RECRUITMENT

다른 분들이 하신것 보고 배우고 또 배우자! (reduce메소드, 2차원 배열 대신 객체를 사용!)

 

포기하지말고 계속해서 공부하자!

화이팅:)

 

입출력 예시


// 프로그래머스 - 실패율

function solution(N, stages) {
    
    // stages에는 1부터 N+1까지 있을 수 있음
    
    // 사용자 총 명수
    let numberOfUser = stages.length
    // 현재 stage를 나타내는 변수 level 선언, 1을 할당
    let level = 1
    // 각 stage의 실패율을 담을 배열선언
    let result = []
    // 주워진 stage를 다 돌았으면 while문을 종료
    while(level < N+1) {
        // 현재 level에서 실패한 사용자를 세워줄 변수 cnt 선언
        let cnt = 0
        
        for(let i = 0; i < stages.length; i++) {
            // 만약 i번째 사용자가 현재 level에 있다면, 실패했으므로 cnt++
            if(stages[i] === level) {
                cnt++
            }
        }
        
        // 만약 실패자가 존재한다면
        if(cnt > 0) {
            let failRatio = (cnt / numberOfUser)
            // 총 사용자 수를 cnt만큼 빼준다
            numberOfUser = numberOfUser - cnt
            // 현재 level과 실패율을 배열 result에 담는다
            result.push([level, failRatio])
        } 
        // 만약 실패자가 존재하지 않는다면
        else if (cnt === 0) {
            // 만약 현재 level에서 사용자가 모두 성공했다면, result에 현재 level과 실패율 0을 담는다
            result.push([level, 0])
        }
        
        // 다음 stage로 넘어간다
        level++ 
    }
    
    // 실패율을 기준으로 내림차순으로 정렬
    let newResult = result.sort((a,b) => b[1] - a[1]).map((a) => {return a[0]})
    return newResult
}

 

<다른분의 solution>




 

 

Comments