๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ฝ”๋”ฉํ…Œ์ŠคํŠธ/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[Javascript] ์‹คํŒจ์œจ(42889)

๋ฌธ์ œ๋งํฌ

 

์ ‘๊ทผ ๋ฐฉ๋ฒ•

์Šคํ…Œ์ด์ง€๋ฅผ ํด๋ฆฌ์–ด ํ•œ ์ธ์› ๋ฐฐ์—ด (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;
}