๋ฌธ์ ๋งํฌ
์ ๊ทผ ๋ฐฉ๋ฒ
์คํ ์ด์ง๋ฅผ ํด๋ฆฌ์ด ํ ์ธ์ ๋ฐฐ์ด (stageClear)์ ์์ฑํ์ฌ
stageClear์ forEach๋ก ์ํํ๋ฉฐ [ํด๋ฆฌ์ด ์ธ์ / ๋์ ์ธ์, index] ๋ฅผ ์์ฑํ์ฌ
stageClear์ ๋ง์ง๋ง element์ธ ๋ชจ๋ ํด๋ฆฌ์ดํ ์ฌ๋์ sliceํ๊ณ
์ ๋ ฌํ์ฌ ๋ง๋ฌด๋ฆฌ ํ์๋ค.
์ด๋ ค์ ๋ ์ ์ stageClear์ ์ํํ ๋
if(idx === 0){ failRate.push([e / challenger, idx+1]); }else{ challenger -= stageClear[idx-1] failRate.push([e / challenger, idx+1]) }โ
idx === 0๊ณผ idx === 1์ด์์ ๊ตฌ๋ถํ์ฌ ์ฒ๋ฆฌํ๋ ๋ถ๋ถ์ ์ฒ์์ ์๊ฐํ์ง ๋ชปํ๋ ์ ์ด๋ค.
function solution(N, stages) {
const answer = [];
const stageClear = new Array(N+1).fill(0);
let failRate = [];
let challenger = stages.length;
// ์คํ
์ด์ง ํด๋ฆฌ์ดํ ์ธ์ ๋ฐฐ์ด ์์ฑ
stages.forEach((e) => {
for(let i = 1; i <=N+1; i++){
if(e===i){
stageClear[i-1] += 1
}
}
})
// ์คํจ์จ๊ณผ ๊ทธ๋์ index๋ฅผ ์์ฑ
stageClear.forEach((e, idx) => {
if(idx === 0){
failRate.push([e / challenger, idx+1]);
}else{
challenger -= stageClear[idx-1]
failRate.push([e / challenger, idx+1])
}
})
failRate = failRate.slice(0,-1);
failRate.sort((a, b) => b[0] - a[0]);
failRate.forEach((e) => answer.push(e[1]));
return answer;
}
'์ฝ๋ฉํ ์คํธ > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Javascript] ์คํ์ฑํ ๋ฐฉ (42888) (0) | 2022.04.28 |
---|---|
[Javascript] ์์ฐ(12982) (0) | 2022.04.28 |
[Javascript] ๋ฉ์ฉกํ ์ฌ๊ฐํ(62048) (0) | 2022.04.28 |
[Javascript] ์์ ๋ํ๊ธฐ (76501) (0) | 2022.04.23 |
[Javascript] ์๋ ์ซ์ ๋ํ๊ธฐ (86051) (0) | 2022.04.23 |