Jun 개발노트

프로그래머스 - 실패율

June 28, 2020

실패율

  1. 이해

    • 주어진 스테이지를 기준으로 각 참가자의 실패율을 구한다.
    • 객체 + 정렬
  2. 계획

    • 각 단계별로 참가자의 인원을 구한다.
    • {stage : ‘i’ , falures : ‘참가자 인원 / 전체인원’}
  3. 실행

    describe("카카오", () => {
        it("실패율", () => {
            expect(getfalue(5, [2, 1, 2, 6, 2, 4, 3, 3])).toEqual([3,4,2,1,5]);
            expect(getfalue(4, [4,4,4,4,4])).toEqual([4,1,2,3]);
        });
    });
    
    
    const getfalue = (n, stages) => {
        const stageNum = Array(n).fill(0);
        for (let man of stages) {
            stageNum[man - 1]++;
        }
        const failureArr = [];
        let sumNum = stages.length;
    
    
        for (let i = 0; i < n; i++) {
            if(sumNum === 0){
                failureArr.push({ stage: i+1, failure: 0 });
            }else{
                failureArr[i] = { stage: i+1, failure: stageNum[i] / sumNum  };
            }
            sumNum -= stageNum[i];
        }
    
        failureArr.sort((a, b) => {
            if (a.failure > b.failure) {
            return -1;
            }
            if (a.failure < b.failure) {
            return 1;
            }
            return a.stage - b.stage;
        });
    
        return failureArr.map(v => v.stage);
        };
  4. 반성

    • 주어져있던 테스트 케이스는 통과하였는데 코드를 채점하니 41점이 나왔다.
    • 인터넷 검색을 통해 힌트를 찾아보니 실패율이 0 일때를 체크하지 못해 시간을 소비했다.
    • 정렬에 대해서 공부하자

Written by Junho You 배운것을 기록하자