2018-11-17
[JS] Tape Equilibrium
EASY

개요

양의 정수 N을 2진수로 나타내었을 때, 1로 둘러싸인 0들을 바이너리 갭이라고 합니다.

예시

  • 9를 2진수로 나타내면 1001이고, 바이너리 갭은 2입니다.
  • 529를 2진수로 나타내면 10000110001이고, 바이너리 갭은 4, 3입니다.
  • 20은 2진수로 10100이며 바이너리 갭은 1입니다.
  • 15는 2진수로 1111이며 바이너리 갭이 없습니다.
  • 32는 2진수로 100000이며 바이너리 갭이 없습니다.

문제

양의 정수 N이 주어질 때, 가장 긴 바이너리 갭의 길이를 출력하세요.

제한

  • N은 1~2,147,483,647 범위를 갖는 integer입니다.

풀이

function solution(N) {
  const binaryArray = N.toString(2).split('')
  let max = 0
  let counter = 0

  for (let i = 1; i < binaryArray.length; i++) {
    if (binaryArray[i] === '0') {
      counter++
    } else {
      if(counter > max) {
        max = counter
      }
      counter = 0
    }
  }
    
  return max
}

스코어 100%

설명

i가 1부터 시작하는 이유는 길이를 맞추기 위해 0으로 채우지 않는다면 모든 2진수는 1로 시작하기 때문입니다. 사실 실행 시간에는 영향이 없습니다.