본문 바로가기
Algorithm/Codility

Lesson1. BinaryGap

by Jun~ 2022. 4. 22.
문제
  • 주어진 양수 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;
}

 

댓글