[키, 값]
// [[1, 9], [2, 7], [3, 8]]
result.sort((a,b) => b[1] - a[1]);
프로그래머스 - Lv1 - 2019 KAKAO BLIND RECRUITMENT 실패율
// 내 풀이
function solution(N, stages) {
// let gameArr = []
// for(let i = 1; i < N+1; i++){
// }
let arr = stages.slice(0).sort((a,b) => a-b);
let countArr = new Array(N+1).fill(0);
for(let i = 0; i < arr.length; i++){
countArr[arr[i] - 1] = countArr[arr[i] - 1] + 1;
}
// console.log(countArr)
let sumArr = new Array(N+1).fill(0);
let sumTotal = countArr.reduce((acc, val, idx) => {
sumArr[idx] = acc;
return acc + val;
},0);
// console.log(sumArr)
let failPercentArr = new Array(N).fill(0);
for(let i = 0; i < N; i++){
failPercentArr[i] = countArr[i] / (sumTotal - sumArr[i] ? sumTotal - sumArr[i] : 1);
}
// console.log(failPercentArr)
var answer = [];
// while(failPercentArr.reduce((acc,cur)=> acc+cur) !== -N ){
// let bigNum = Math.max(...failPercentArr);
// let idx = failPercentArr.indexOf(bigNum);
// answer.push(idx+1);
// failPercentArr[idx] = -1;
// }
// maxNum = failPercentArr 가장 큰 수 찾기
// failPercentArr에서 큰 수 index 찾기
// answer.push(index+1)
// failPercentArr[index] = -1
let sortArr = failPercentArr.slice(0).sort((a,b) => b-a);
sortArr = [... new Set(sortArr)]
// console.log(sortArr, failPercentArr)
for(let i = 0; i < sortArr.length; i++){
for(let j = 0; j < failPercentArr.length; j++){
if(sortArr[i] === failPercentArr[j]) answer.push(j + 1)
}
}
// sortArr = failPercentArr 큰 순서대로 정렬
// for(sortArr, i){ for(failPercentArr, j){if(sortArr[i] === failPercentArr[j]){answer.push(j + 1)}} }
return answer;
}
solution(9, [2, 1, 2, 6, 2, 4, 3, 3])
// 깔끔한 풀이
function solution(N, stages) {
let result = [];
for(let i=1; i<=N; i++){
let reach = stages.filter((x) => x >= i).length;
let curr = stages.filter((x) => x === i).length;
result.push([i, curr/reach]);
}
result.sort((a,b) => b[1] - a[1]);
return result.map((x) => x[0]);
}