avatar
$
Published on

Codility - Binary Gap

Author
  • avatar
    Name
    yceffort

1-1 Binary Gap

๋ฌธ์ œ

์ˆซ์ž N์„ ์ด์ง„์ˆ˜๋กœ ๋ฐ”๊ฟจ์„๋•Œ, 1๊ณผ 1์‚ฌ์ด์— ์žˆ๋Š” 0์˜ ๊ฐœ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๋งŽ์ด ์—ฐ์†ํ•ด ์žˆ๋Š” 0์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋ผ.

9๋Š” ์ด์ง„์ˆ˜๋กœ ๋ฐ”๊ฟ€ ๊ฒฝ์šฐ 1001, ์ด๊ฒฝ์šฐ 0์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜๋Š” 2.
529๋Š” ์ด์ง„์ˆ˜๋กœ ๋ฐ”๊ฟ€ ๊ฒฝ์šฐ 1000010001, ์ด๊ฒฝ์šฐ 0์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜๋Š” 3.
20์€ ์ด์ง„์ˆ˜๋กœ ๋ฐ”๊ฟ€ ๊ฒฝ์šฐ 10100, ์ด ๊ฒฝ์šฐ 0์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜๋Š” 1. (100์€ 1๋กœ ๋‘˜๋Ÿฌ ์Œ“์—ฌ ์žˆ์ง€ ์•Š์Œ)
15๋Š” ์ด์ง„์ˆ˜๋กœ ๋ฐ”๊ฟ€๊ฒฝ์šฐ 1111 ์ด๋ฏ€๋กœ, 0์˜ ๊ฐœ์ˆ˜๋Š” 0๊ฐœ

ํ’€์ด

function solution(N) {
  // 2์ง„๋ฒ•์œผ๋กœ ๋ณ€ํ™˜
  const binary = N.toString(2)
  // 1๋กœ ์ชผ๊ฐ ๋‹ค.
  const splitted = binary.split(1)

  // ๋‘๊ฐœ ์ดํ•˜๋กœ ์ชผ๊ฐœ์งˆ ๊ฒฝ์šฐ, 1์ด ํ•œ๊ฐœ ๋ฐ–์— ์—†์œผ๋ฏ€๋กœ ๊ฐ’์€ 0
  if (splitted.length <= 2) {
    return 0
  } else {
    // ๋งˆ์ง€๋ง‰ ๋‚˜๋ˆ„๊ธฐ๋Š” ์˜๋ฏธ๊ฐ€ ์—†๋‹ค.
    // '' ์ด๊ฑฐ๋‚˜ 1๋กœ ๋ง‰ํ˜€์žˆ์ง€ ์•Š๋‹ค๋ฉด ์ˆซ์ž๊ฐ€ ๋‚˜์˜ฌ ๊ฒƒ์ด๋ฏ€๋กœ
    splitted.pop()
    // ์ œ์ผ
    return splitted.reduce((p, c) => (c.length > p ? c.length : p), 0)
  }
}

ํ•ด์„ค

๋ฐฐ์—ด์˜ ๋งˆ์ง€๋ง‰ ์š”์†Œ๋ฅผ popํ•˜๋Š” ๊ฒƒ๋งŒ ๊ธฐ์–ตํ•˜๋ฉด ๋  ๋“ฏ.

https://app.codility.com/demo/results/training3C4SN2-EXK/