๋ฌธ์ œ์ถœ์ฒ˜

์ฝ”๋”œ๋ฆฌํ‹ฐ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๋ฌธ์ œ์š”์•ฝ

์ฃผ์–ด์ง„ ์–‘์ˆ˜ N์„ ์ด์ง„ํ‘œํ˜„์œผ๋กœ ๋ดค์„ ๋•Œ, ๊ฐ€์žฅ ๊ธด ์ด์ง„๊ฐ„๊ฒฉ์„ ๊ตฌํ•˜๋ผ.

์ด์ง„ ๊ฐ„๊ฒฉ์ด๋ž€, ์–‘์ชฝ์ด 1๋กœ ๋‘˜๋Ÿฌ์Œ“์ธ 0์˜ ๊ธธ์ด๋ฅผ ๋งํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, N = 1041 ์ด๋ผ๋ฉด 10000010001 ์ด๋ฏ€๋กœ 1๋กœ ๊ฐ์‹ธ์ง„ 00000๊ณผ 0000์ค‘ ๊ฐ€์žฅ ๊ธด ์ˆ˜๋Š” 00000์ด๋ฏ€๋กœ 5๊ฐ€ ๋ฐ˜ํ™˜๋˜์–ด์•ผ ํ•œ๋‹ค.

N = 32 ์ด๋ผ๋ฉด, 100000 ์ด๋ฏ€๋กœ 1๋กœ ๊ฐ์‹ธ์ง„ ์ˆ˜๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— 0์„ ๋ฐ˜ํ™˜ํ•ด์•ผํ•œ๋‹ค.


ํ’€์ด

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
function solution(N) {
  const binary = N.toString(2);
  const zeroArray = binary.split("1");
  let result = 0;

  for (let i = 0; i < zeroArray.length; i++) {
    const prev = zeroArray[i - 1] !== undefined;
    const next = zeroArray[i + 1] !== undefined;
    const current = zeroArray[i].indexOf("0") > -1;
    if (prev && current && next) {
      const thisLength = zeroArray[i].length;
      result = thisLength > result ? thisLength : result;
    }
  }

  return result;
}

์ฒ˜์Œ ํ’€์€ ๋ฐฉ๋ฒ•์ด๋‹ค. ์ผ๋‹จ ์ด์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•œ ๋‹ค์Œ, 1๋กœ ์Šคํ”Œ๋ฆฟํ•˜๊ณ  ์ด์ „, ๋‹ค์Œ, ํ˜„์žฌ ์š”์†Œ๋ฅผ ๊ฐ๊ฐ ๋น„๊ตํ•˜์—ฌ ํ’€์—ˆ๋‹ค.
์ด๋ ‡๊ฒŒ ํ•˜๋‹ˆ ์ผ๋‹จ ๋‹ต๊ณผ ํผํฌ๋จผ์Šค ๋ถ€๋ถ„์—์„œ 100์ ์„ ๋ฐ›์„์ˆ˜๋Š” ์žˆ์—ˆ์ง€๋งŒ ๋ญ”๊ฐ€ ์กฐ์žกํ•œ ๋Š๋‚Œ์ด ๋“ค์–ด์„œ ๊ฒ€์ƒ‰์„ ํ†ตํ•ด ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์˜ ํ’€์ด๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์•„๋ž˜์™€ ๊ฐ™์ด ๋‹ค์‹œ ํ•œ ๋ฒˆ ํ’€์–ด๋ดค๋‹ค.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
function solution(N) {
  const binary = N.toString(2);
  const gap = binary.substr(0, binary.lastIndexOf("1") + 1);
  const zeroArray = gap.split("1");

  let result = 0;
  for (let i = 0; i < zeroArray.length; i++) {
    result = Math.max(result, zeroArray[i].length);
  }

  // ์ด๋ ‡๊ฒŒ๋„ ๊ฐ€๋Šฅ
  // result = Math.max.apply(null, zeroArray.map(item => item.length));

  return result;
}

์Šคํ”Œ๋ฆฟ์„ ํ•˜๊ธฐ ์ „์— ์ด์ง„ ์ŠคํŠธ๋ง์—์„œ ๋ฏธ๋ฆฌ ๋งˆ์ง€๋ง‰ 1์„ ๊ตฌํ•ด์„œ ๋ฌธ์ž์—ด์„ ๊ตฌํ•ด๋†“์œผ๋ฉด ์ฒ˜์Œ ํ’€์—ˆ๋˜ ๊ฒƒ๊ณผ ๊ฐ™์ด ์ผ์ผํžˆ ์ „๊ณผ ๋‹ค์Œ ์š”์†Œ๋ฅผ ๋น„๊ตํ•ด๊ฐ€๋ฉฐ ์ˆœํšŒํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.
ํ›จ์”ฌ ๊น”๋”ํ•˜๊ณ  ์˜คํžˆ๋ ค ์ดํ•ด๊ฐ€ ์‰ฝ๋‹ค. 100์ ์ด๋ผ๊ณ  ๋„˜์–ด๊ฐ€์ง€ ๋ง๊ณ  ๋” ๋‚˜์€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‚˜ ํ•ญ์ƒ ๊ณ ๋ฏผํ•ด๋ณด์ž.

์ฃผ์„์นœ ๋ถ€๋ถ„๊ณผ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์ค„์ผ ์ˆ˜๋„ ์žˆ๊ฒ ๋‹ค.