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

ํ”„์—” ๊ณต๋ถ€/๐Ÿซง ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€

[์•Œ๊ณ ๋ฆฌ์ฆ˜ || ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์‹คํŒจ์œจ

728x90

ํ‘ธ๋Š”๋ฐ ์‹œ๊ฐ„ ์ข€ ๊ฑธ๋ฆฌ๊ธด ํ–ˆ๋Š”๋ฐ, ๊ทธ๋ž˜๋„ ํ˜ผ์ž ํž˜์œผ๋กœ ํ’€์–ด๋ƒˆ๋‹ค. 

๋‚˜ ์ž์‹  ๋Œ€๊ฒฌํ•ด!

 

์ฒ˜์Œ์— ์—„์ฒญ ๋ณต์žกํ•˜๊ฒŒ ์ƒ๊ฐํ–ˆ๋‹ค. 

(์ฑŒ๋ฆฐ์ง€ ํ•˜๋Š” ์‚ฌ๋žŒ ์ˆ˜๋ฅผ ๋”ฐ๋กœ ๋‹ด๊ณ , ํ†ตํ™”ํ•œ ์‚ฌ๋žŒ ์ˆ˜๋ฅผ ๋”ฐ๋กœ ๋‹ด๊ณ ..)

function solution(N, stages) {
    let passPeople = {};
    let challengePeople = {};
    for (let i = 1; i <= N + 1; i++) {
        passPeople[i] = challengePeople[i] = 0;
        stages.map(stage => {
            if (i <= N) {
                if (stage > i) passPeople[i] += 1;
                if (stage >= i) challengePeople[i] += 1;
            } else {
                if (stage >= i) passPeople[i - 1] += 1;
                if (stage >= i) challengePeople[i - 1] += 1;
            }
        })
    }

    let failRate = {};

    for (let j = 1; j <= N; j++) {
        let [fail, challenge] = [challengePeople[j] - passPeople[j], challengePeople[j]]
        failRate[j] = (fail / challenge)
    }
    let result = [] = Object.entries(failRate).sort((a, b) => b[1] - a[1]).map(v => Number(v[0]))
    console.log(result)
}

๊ทธ๋ฆฌ๊ณ  ๋”ฑ ํ•˜๋‚˜์˜ ์ผ€์ด์Šค์—์„œ ํ†ต๊ณผ๋ฅผ ๋ชปํ–ˆ๋Š”๋ฐ, ์ฝ”๋“œ๊ฐ€ ๋ณต์žกํ•ด์„œ ์ฐพ์•„๋‚ผ ์—„๋‘๊ฐ€ ์•ˆ๋‚ฌ๋‹ค.

 

์‹คํŒจ์œจ์ด ์ ์šฉ๋˜๋Š” ํŒจํ„ด์ด ๋ณด์ด๋ฉด ์˜์™ธ๋กœ ์—„์ฒญ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ค„์ผ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์˜€๋‹ค.

stage ์‹คํŒจ์œจ = ํ•ด๋‹น satage ์— ๋จธ๋ฌด๋ฅด๋Š” ์‚ฌ๋žŒ์˜ ์ˆ˜ / ์ด์ „ ๋‹จ๊ณ„๋ฅผ ํ†ต๊ณผํ•œ ์‚ฌ๋žŒ์˜ ์ˆ˜(=๋„์ „ํ•˜๋Š” ์‚ฌ๋žŒ ์ˆ˜ - ์‹คํŒจํ•œ ์‚ฌ๋žŒ ์ˆ˜) 

 

 

function solution(N, stages) {
    let challengeCount = stages.length;
    let failRate = [];
    let failCount = 0;
    for (let i = 1; i <= N; i++) {
        let successCount = stages.filter(v => v > i).length
        challengeCount -= failCount;
        failCount = challengeCount - successCount;

        failRate.push([i, failCount / challengeCount])
    }
    return failRate.sort((a, b) => b[1] - a[1]).map(v => v[0])
}

filter ๋กœ ์„ฑ๊ณตํ•œ ์‚ฌ๋žŒ์˜ ์ˆ˜๋ฅผ ๊ฐ€๋ ค๋‚ธ๋‹ค. value ๋ณด๋‹ค ๋†’์€ ์ˆ˜๋ผ๋ฉด ๊ทธ ์ „ ๋ ˆ๋ฒจ์„ ํ†ต๊ณผํ•œ ๊ฒƒ์ด๋‹ˆ๊นŒ!

๊ทธ๋ฆฌ๊ณ  ๋„์ „ํ•œ ์‚ฌ๋žŒ์˜ ์ˆ˜๋ฅผ challengeCount ๋ณ€์ˆ˜์— ๋‹ด๋Š”๋‹ค. 

์ฒ˜์Œ์—” ์ „์ฒด ์ธ์›์ด๋‹ˆ, stages ์˜ length ์™€ ๋™์ผํ•˜์ง€๋งŒ, 

๋‹ค์Œ ๋‹จ๊ณ„๋กœ ๋„˜์–ด๊ฐˆ ๋• ์‹คํŒจํ•œ ์‚ฌ๋žŒ์˜ ์ˆ˜๋ฅผ ์ œ์™ธํ•œ๋‹ค. 

 

stage ๋ฒˆํ˜ธ์ธ i ์™€ ์‹คํŒจ์œจ์„ failRate ๋ฐฐ์—ด์— ๋„ฃ๋Š”๋‹ค. 

 

๊ทธ๋Ÿผ 1๋ฒˆ ์˜ˆ์ œ์ธ ๊ฒฝ์šฐ์—”

์ด๋ ‡๊ฒŒ ๋œธ. 

 

index 1์ธ ์‹คํŒจ์œจ๋กœ sort ๋ฅผ ๋Œ๋ฆฐ๋‹ค. 

 

stage ์˜ ๋ฒˆํ˜ธ๋งŒ ๋“ค์–ด์žˆ๋Š” ๋ฐฐ์—ด์„ return ํ•˜๋ฉด ๋˜๋‹ˆ, Map ์œผ๋กœ [0] ๋งŒ ๋‹ด์•„์ค€๋‹ค. 

 

 

 

 

์ œ์ถœ ๊ฒฐ๊ณผ >> ์ฟ„์ฟ„ ํ†ต๊ณผํ–ˆ๋“œ์•„~~

 

 

 

 

728x90
๋ฐ˜์‘ํ˜•