2019 KAKAO BLIND RECRUITMENT - 실패율

hwakyungChoi·2020년 9월 3일
0
post-custom-banner
function solution(N, stages) {
    var answer = [];
    var failed = new Array(N) // 스테이지 실패한 사람 수 카운트 후 남은 사람 수 만큼 나눠줄 값 넣을 배열 생성
    var user = stages.length //도전자 수 
    
    for(var index =0; index < failed.length; index++){
        failed[index] = 0
        var c = 0,failedCount = 0
        for(var indexStages = 0; indexStages < stages.length; indexStages++ ){
            if(index+1 === stages[indexStages]){ //만약 해당 스테이지에 도전중이라면
                failedCount += 1 
                c += 1
            }
        }
        if(failedCount === 0){
            failed[index] = 0 // 아무도 없다면 0 처리
        } else{
             failed[index] = failedCount/user //도전자수/남은 도전자수
         var user = user - c //스테이지에 남은 도전자 제거
        }


    }

    var count = 0
    var visited = new Array(N).fill(0) // 같은 수가 나왔을 때 
//     최대값 구하는데 인덱스값도 고려 
    while (count < N){ // 전체 배열을 하나씩 확인하기 위한 조건
        count++
        var maxVal = -1
        var maxIn = 0
        for(var i = 0; i < N; i++){

            if(maxVal < failed[i] && visited[i] === 0){ // 값을 체크하면서 나감, 이미 체크한 값은 피하기 위한 조건
                maxVal = failed[i]
                maxIn = i
            }
        }

        visited[maxIn] = 1

        answer.push(maxIn+1) // 찾은 최대값 넣기
    }
    console.log(answer)
    return answer;
}
post-custom-banner

0개의 댓글