티스토리 뷰
이진수 10001이 있다면 1과 1사이에 0이 몇개있는지를 반환하는 함수를 작성합니다.
100100001 처럼 1이 여러개 있다면 가장 큰 0의 수인 4를 반환하면 됩니다.
1000 처럼 1과 1사이의 0이 없으면 0을 반환합니다.
숫자 범위는 1 부터 2,147,483,647 입니다.
함수명: function solution(N);
입력값: 10진수
// 개선
const solution = (N) => {
const bin = N.toString(2);
let cnt = 0;
let result = 0;
[...bin].forEach(n => {
if (n === '1') {
result = result < cnt ? cnt : result;
cnt = 0;
} else {
cnt++;
}
return result;
};
// 기존
function sulution2(N) {
const bin = N.toString(2);
for (let i = 0; i < e.length; i++) {
if (Number(e.charAt(i)) === 0) {
yong++;
} else {
if (yong > maxCount) {
maxCount = yong;
}
yong = 0;
}
}
return maxCount;
}
solution(2189378123421);
solution2(2189378123421);
// 2진수 - 11111110111000001000110101111011010011101
// 결과: 1과1 사이의 0 최대개수는 5
댓글
