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

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

[Javascript] ์ ํ”„์™€ ์ˆœ๊ฐ„ ์ด๋™ (12980)

๋ฌธ์ œ๋งํฌ

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์ ํ”„์™€ ์ˆœ๊ฐ„ ์ด๋™

OO ์—ฐ๊ตฌ์†Œ๋Š” ํ•œ ๋ฒˆ์— K ์นธ์„ ์•ž์œผ๋กœ ์ ํ”„ํ•˜๊ฑฐ๋‚˜, (ํ˜„์žฌ๊นŒ์ง€ ์˜จ ๊ฑฐ๋ฆฌ) x 2 ์— ํ•ด๋‹นํ•˜๋Š” ์œ„์น˜๋กœ ์ˆœ๊ฐ„์ด๋™์„ ํ•  ์ˆ˜ ์žˆ๋Š” ํŠน์ˆ˜ํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ์•„์ด์–ธ ์ŠˆํŠธ๋ฅผ ๊ฐœ๋ฐœํ•˜์—ฌ ํŒ๋งคํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์•„์ด์–ธ ์Šˆ

programmers.co.kr

 

์ ‘๊ทผ ๋ฐฉ๋ฒ•

๊ทœ์น™์„ ์ฐพ๋Š” ๋ฌธ์ œ์ด๋‹ค.

K์นธ์„ ๊ฐ€๋ฉด K๋งŒํผ์˜ ๊ฑด์ „์ง€๊ฐ€ ํ•„์š”ํ•˜์ง€๋งŒ ์ˆœ๊ฐ„์ด๋™์—๋Š” ๊ฑด์ „์ง€๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค.
์ฆ‰, ์ˆœ๊ฐ„์ด๋™์„ ์ตœ๋Œ€ํ•œ ์‚ฌ์šฉํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.

์ˆœ๊ฐ„์ด๋™๋งŒ ์‚ฌ์šฉํ•  ์‹œ 1-> 2 -> 4 -> 8 -> 16 .. ์ด๋Ÿฐ์‹์œผ๋กœ 2๋ฐฐ์”ฉ ์ฆ๊ฐ€ํ•˜๋Š”๋ฐ

๋ฐ˜๋Œ€๋กœ n์—์„œ n / 2๊ฐ€ ์„ฑ๋ฆฝํ• ๋•Œ์—๋Š” ๊ฑด์ „์ง€๊ฐ€ ๋“ค์ง€ ์•Š๋Š”๋‹ค๋Š” ๋ง์ด๋‹ค.

์ฆ‰ n = 5000 ์ผ๋•Œ
5000 -> 2500 -> 1250 -> 625 -> 624 -> 312 -> 156 -> 78 -> 39 -> 38 ...

์ด์ฒ˜๋Ÿผ n์ด ํ™€์ˆ˜ ์ผ๋•Œ ๊ฑด์ „์ง€ + 1์„ ํ•ด์ฃผ๋ฉด ์‰ฝ๊ฒŒ ์ •๋‹ต์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

function solution(n) {
  var ans = 0;

  while (n > 0) {
    if (n % 2 === 0) n /= 2;
    else {
      ans++;
      n -= 1;
    }
  }

  return ans;
}