자연수 입력 N 에 대해서, N을 이진법으로 표현했을때 1과 1사이에 0이 연속적으로 들어가는 횟수를 zero gap 이라고 하자. 이때 zero gap 길이중 가장 큰 값을 출력하는 함수를 작성하시오.
ex) 9는 이진법으로 1001, 출력값은 2. 1041은 출력값 5.
function solution(N) {
let q = N;
let remainder;
let reverseBinary = [];
let flag = false;
let count = 0;
let candidate = [];
// Convert N to binary (reverse order)
while (q != 0) {
remainder = q % 2;
q = Math.floor(q / 2);
reverseBinary.push(remainder);
}
// Measure Zero gap length.
if (reverseBinary[0] == 1) {
for (let i = 0; i < reverseBinary.length; i++) {
if (reverseBinary[i] == 0) {
count = count + 1;
} else {
candidate.push(count);
count = 0;
}
}
} else {
for (let i = 0; i < reverseBinary.length; i++) {
if (reverseBinary[i] == 1) {
flag = true;
}
if (flag) {
if (reverseBinary[i] == 0) {
count = count + 1;
} else {
candidate.push(count);
count = 0;
}
}
}
}
// Return maximum value
return Math.max(
...candidate.map((ele) => {
return ele * 1;
})
);
}