PR - 실패율
문제 및 예시
지난 풀이 참고
풀이
- 주어진 배열을 정렬하고, 길이를 따로 저장해둔다.
- 배열을 순회하면서 다른 숫자가 나올 때까지는
curStage
배열에 연속해서 숫자를 저장한다. - 만약 다른 숫자가 나왔다면
curStage
배열의 길이를 남은 플레이어들의 수 (주어진 배열의 길이)로 나눠서 실패율을 구한다. - 빈 객채에 키는 스테이지, 값은 실패율로 따로 저장해둔다.
- 객체를 배열화하고, 실패율을 기준으로 정렬한다.
코드
function solution(N, stages) {
var answer = [];
const sortedStages = stages.sort((a,b) => a-b);
const stagesCopy = sortedStages.slice(0);
let curStage = [];
let failRate = 0;
let players = stagesCopy.length;
const obj = {};
let stage = 1;
for(let i = 0; i < stagesCopy.length; i++) {
if(stagesCopy[i] === stagesCopy[i+1]) curStage.push(stagesCopy[i]);
else {
curStage.push(stagesCopy[i]);
failRate = curStage.length/players;
stage = curStage[0];
if(stage > N) {
failRate = 0;
}
obj[stage] = failRate;
players -= curStage.length;
curStage = [];
}
}
for(let i = 1; i <= N; i++) {
if(obj[i] === undefined) {
obj[i] = 0;
}
}
let sortObj = [];
for(let number in obj) {
sortObj.push([number, obj[number]]);
}
sortObj.sort((a,b) => {
return b[1] - a[1];
});
for(let i = 0; i < sortObj.length; i++) {
answer.push(Number(sortObj[i][0]));
}
if(answer[answer.length-1] > N) answer.pop();
return answer;
}
Author And Source
이 문제에 관하여(PR - 실패율), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@goody/PR-실패율저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)