프로그래머스 - 실패율
2020-06-28
실패율
- 이해
- 주어진 스테이지를 기준으로 각 참가자의 실패율을 구한다.
- 객체 + 정렬
- 계획
- 각 단계별로 참가자의 인원을 구한다.
- {stage : 'i' , falures : '참가자 인원 / 전체인원'}
- 실행
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); };
- 반성
- 주어져있던 테스트 케이스는 통과하였는데 코드를 채점하니 41점이 나왔다.
- 인터넷 검색을 통해 힌트를 찾아보니 실패율이 0 일때를 체크하지 못해 시간을 소비했다.
- 정렬에 대해서 공부하자