문제
- 주어진 양수 N을 2진수로 변환 후, 1로 둘러 쌓인 가장 긴 0의 길이 구하는 문제
- N = 1041 > 2진수로 변환 시 10000010001 > 1로 둘러 쌓인 0의 길이는 5와 3 > 가장 큰 gap은 5
풀이 - Javascript
- 주어진 양수 N을 2진수로 변환 후, 문자로 변환
- loop문 돌면서, 1과 1사이의 0의 개수 확인 후, temp변수와 비교하여 큰 값으로 대체
- -1 해주는 이유는 0의 개수를 구하는 것이기 때문
- idx 변수에 이전 1을 찾았던 index를 저장하여 활용함
- 시간 복잡도 O(N)
function solution(N) {
const binStr = String(N.toString(2));
let maxGap = 0;
let idx = 0;
for(let i=0;i<binStr.length;i++) {
const chr = binStr.charAt(i);
if(chr === '1') {
maxGap = Math.max((i - idx - 1), maxGap);
idx = i;
}
}
return maxGap;
}
댓글