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

๐Ÿ“ ์•Œ๊ณ ๋ฆฌ์ฆ˜/Programmers

[Javascript/PGS] Lv.3 : ๊ธฐ์ง€๊ตญ ์„ค์น˜

728x90
๋ฐ˜์‘ํ˜•

 

https://school.programmers.co.kr/learn/courses/30/lessons/12979?language=javascript#

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก, ์ฑ„์šฉ๊นŒ์ง€ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr


 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ ˆ๋ฒจ 3 ๋ฌธ์ œ.

์˜ˆ์ „์— c++๋กœ ํ’€๋‹ค๊ฐ€ ํ•ด๊ฒฐ ๋ชปํ–ˆ๋˜ ๋ฌธ์ œ์ธ๋ฐ, ์˜ค๋Š˜ js๋กœ๋Š” ํ•ด๊ฒฐํ–ˆ๋‹ค

๊ทธ๋ž˜๋„ ์‚ฌ๊ณ ๋ ฅ์ด ์ข€ ๋Š˜์—ˆ๋‚˜..^^ ์•ฝ๊ฐ„ ์„ฑ์žฅํ•œ ๋“ฏ

 

ํŠน๋ณ„ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์“ฐ๋Š” ๋ฌธ์ œ๋Š” ์•„๋‹ˆ์ง€๋งŒ, ์‹ ๊ฒฝ์จ์•ผ ํ•  ๋ถ€๋ถ„์ด ์€๊ทผํžˆ ๋งŽ๋‹ค.

 

๋ฉ”์ธ ํžŒํŠธ๋Š” n์˜ ๋ฒ”์œ„์ด๋‹ค. (๋งค์šฐ ํฌ๊ธฐ ๋•Œ๋ฌธ์— stations๋ฅผ ํ™œ์šฉํ•ด์•ผ ํ•œ๋‹ค)

์ฃผ์˜ํ•  ์ ์€ ์ค‘๊ฐ„์— ๋นˆ ๊ตฌ๊ฐ„ ๊ตฌํ•  ์‹œ, ์Œ์ˆ˜๋‚˜ 0์ด ๋‚˜์˜ค๋Š” ๊ฒฝ์šฐ๋ฅผ ์˜ˆ์™ธ์ฒ˜๋ฆฌํ•ด์ค˜์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ!!!

 

๊ทผ๋ฐ ์ œ์ถœํ•˜๋‹ˆ๊นŒ ์ •ํ™•๋„ 100% ๋‚˜์˜ค๋Š”๋ฐ ํšจ์œจ์„ฑ์—์„œ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ํ•˜๋‚˜ ๋–ด๋‹ค.

์ด๊ฑฐ ์™œ ์ด๋Ÿฌ๋‚˜ ์‹ถ์–ด์„œ ์งˆ๋ฌธ ๊ฒŒ์‹œํŒ์„ ๋’ค์ ธ๋ณด๋‹ˆ,

Java๋กœ ํ’€์ดํ•œ ์‚ฌ๋žŒ๋“ค์ด ๋ฐ˜์˜ฌ๋ฆผ ์—ฐ์‚ฐ(Math.ceil) ๋•Œ๋ฌธ์— ์˜ค์—ดํ–ˆ๋˜(...)ํ”์ ์ด ์žˆ์—ˆ๋‹ค.

 

์•„๋‹ˆ ์™œ์š”?

 

๋ฐ˜์˜ฌ๋ฆผ ํ•จ์ˆ˜๊ฐ€ ์€๊ทผ ํšจ์œจ์ด ์ข‹์ง€ ์•Š๋‹ค๊ณ  ํ•œ๋‹ค.

์ด๊ฑธ ๋ณด๊ณ , js๋„ ๋ฐ˜์˜ฌ๋ฆผ ์—ฐ์‚ฐ ์“ฐ๋ฉด ์ดˆ๊ณผ๋˜๊ฒ ๋„ค ์‹ถ์–ด์„œ ๊ธฐ์กด ์ฝ”๋“œ์˜ Math.floor ํ•จ์ˆ˜๋ฅผ ๋ชจ๋‘ ์ง์ ‘ ์—ฐ์‚ฐ์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ์—ˆ๋‹ค.

๊ทธ๋žฌ๋”๋‹ˆ ๋ฐ”๋กœ ํ†ต๊ณผ~~ใ…Žใ……ใ…Ž

 

๋‚˜์˜ ํ’€์ด

function solution(n, stations, w) {
    let answer = 0;
    let currentNum = 1;
    let noSignal = 0;
    let width = 2*w+1;
    // n ๋ฒ”์œ„๊ฐ€ ํฌ๋‹ˆ๊นŒ stations์œผ๋กœ ์—ฐ์‚ฐํ•ด์•ผ๊ฒ ๋‹ค๊ณ  ํŒ๋‹จ
    for(let i=0; i<stations.length; ++i){
        noSignal = stations[i]-w-currentNum;
        if(n==5) console.log(noSignal, currentNum)
        currentNum = stations[i]+w+1;
        if(noSignal<=0) continue; // ์ฃผ์˜
        answer += (noSignal-noSignal%width)/width;
        if(noSignal%width > 0) answer += 1;
    }
    if(n > stations[stations.length-1]+w){
        noSignal = n-(stations[stations.length-1]+w);
        answer += (noSignal-noSignal%width)/width;
        if(noSignal%width > 0) answer += 1;
    }
    return answer;
}

 

728x90
๋ฐ˜์‘ํ˜•