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

0min·2021년 6월 16일
0

프로그래머스 (실패율) LV1

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

언어

자바스크립트(JavaScript)

코드


//const N = 5;
//const stages = [2, 1, 2, 6, 2, 4, 3, 3];


function solution(N, stages) {
    let arr = [];
    let totalNum = stages.length;
    
    for (let i = 1; i <= N; i++) {
        let stageNum = stages.filter(ele => ele === i).length // 해당스테이지를 통과하지 못한 유저수.
        let failRatio = 0; // 실패율의 기본값을 정한다.
      
        if (stageNum === 0) {
            failRatio = 0; // 해당 스테이지를 통과하지 못한 유저가 없다면 실패율은 0이다.
        } else {
            failRatio = stageNum / totalNum; // 해당 스테이지를 통과하지 못한 유저가 있다면 실패율을 계산해준다. }

        }
        totalNum -= stageNum; // 전체 유저수중 해당 스테이지를 통과하지 못한 유저수를 빼준다.
        arr.push({idx:i, ratio:failRatio}); // arr에 idx와 ratio로 저장해준다.
    }

    arr.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 arr.map(ele => ele.idx);
}

console.log(solution(N, stages));

풀이

  1. 해당 스테이지를 통과하지 못한 유저수를 구하고 전체 유저수로 나누어 실패율을 구한다.
    // filter() 메서드 사용
  2. 다음 스테이지로 이동할 경우 전체유저수에서 통과하지 못한 유저수를 빼주면서 구한다.
  3. 모두 구해지면 stage 넘버를 idx로 실패율을 ratio로 가지는 객체를 배열로 저장한다.
    // push() 메서드 사용
  4. 배열을 실패율을 기준으로 내림차순으로 정렬하는데 만일 실패율이 동일하다면 stage넘버를
    기준으로 오름차순으로 정렬해준다.
    // sort() 메서드 사용
  5. return 값을 idx 값만 가져온다.
    // map() 메서드 사용
profile
🐔이되고 싶은 🐥..

0개의 댓글

관련 채용 정보