[프로그래머스]23.04.20_실패율

윤성해·2023년 4월 20일
0

알고리즘

목록 보기
21/22
post-thumbnail

실패율

문제

레퍼런스

1.for문

function solution(N, stages) {
    // 각각의 스테이지의 스테이지 번호, 실패율, 실패한 유저의 수를 저장
    const infos = [];
    
    for (let i = 1; i<= N; i++){
        infos.push({
            stage: i, //스테이지 번호
            users: 0, //해당스테이지에 머물러있는 유저의 수
            fail: 0, //해당스테이지의 실패율
        })
    }
    let allUsers = stages.length; //전체 유저의수를 저장
    for (let i = 0; i < stages.length; i++){
        
        if(infos[stages[i]-1]){
            infos[ stages[i]-1 ].users++
            
            //현재 스ㅔ이지의 번호와 다음 스테이지의 번호가 동일하지 않을 때
            //현재 스테이지의 합산이 끝나는 시점
            if(stages[i] !== stages[i+1]){
                  // console.log(stages[i], infos[stages[i]-1],allUsers)
                
                infos[stages[i]-1].fail = infos[stages[i]-1].users / allUsers;
                allUsers -= infos[stages[i]-1].users;
                
              
            }
            
            // console.log(stages[i], stages[i+1])
        }
       // console.log( stages[i],infos[stages[i] -1] )
    }
    return infos.sort((a,b) =>a.fail > b.fail ? -1 : 1)
                .map(el => el.stage)
}

2.메서드

profile
Slow and steady wins the race.

0개의 댓글