알고리즘

프로그래머스 JS | 실패율

3jun 2022. 6. 27. 14:27
출처 : 프로그래머스 코딩테스트 연습 - 실패율

https://programmers.co.kr/learn/courses/30/lessons/42889

 

코딩테스트 연습 - 실패율

실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스

programmers.co.kr

❌ Solution

function solution(N, stages) {
    const answer = [];
    let players = stages.length;
    const stageArr = new Array(N).fill(0);
    
    // 각 스테이지별 플레이 중인 플레이어 배열
    for( let i = 0; i < stages.length; i++) {
        if( stages[i] <= N) {
            stageArr[stages[i] - 1]++;        
        }
    }
    
    // 각 스테이지 별 실패율
    for( let j = 0; j < stageArr.length; j++) {
        let current = stageArr[j];
        answer.push(stageArr[j] / players);
        players -= current;
    }
    
    // 실패율 내림차순으로 스테이지 정렬
   
    
    return answer;
}

✅ Solution

function solution(N, stages) {
    const answer = [];
    
    let players = stages.length;
    const stageArr = new Array(N).fill(0);
    
    console.log(stageArr)
    // 각 스테이지별 플레이 중인 플레이어 배열
    for( let i = 0; i < stages.length; i++) {
        if(stages[i] <= N) {
            stageArr[stages[i] - 1]++;        
        }
    }
    console.log(stageArr)
    
    // 각 스테이지 별 실패율
    for( let j = 0; j < stageArr.length; j++) {
        let current = stageArr[j];
        answer.push({idx: j + 1, ratio: stageArr[j] / players});
        players -= current;
    }

    // 실패율 내림차순으로 스테이지 정렬
    answer.sort((a,b)=>{
        if(a.ratio>b.ratio){
            return -1;
        }else if (a.ratio<b.ratio){
            return 1;
        }else{
            if(a.idx>b.idx){
                return 1;
            }else{
                return -1;
            }
        }
    })
    
    
    return answer.map(el => el.idx);
}

참고

https://jongbeom-dev.tistory.com/144