[Codility][Python] BinaryGap

Jaden.dev·2021년 6월 20일
0

💻 PROBLEM SOLVING

목록 보기
5/5

문제

  • 10진수를 2진수로 변환했을 때, 두개의 1 사이에 존재하는 0의 최대 개수를 리턴
  • ex. 1041(10진수)는 10000010001(2진수)로 변환되고, 최대 gap은 5
  • 연속된 1 사이의 gap은 0, 또한 2진수에 1이 하나만 존재하는 경우( 1000....)도 gap은 존재하지 않으므로 0

풀이

def solution(N):
    prev, next = -1, -1
    cnt = 0
    binary_gap = 0
    while N > 0:
        r = N % 2
        N = (N - r) / 2
        if r == 1:
            prev = next
            next = cnt
        if prev >= 0 and next > 0 and next - prev - 1 > binary_gap:
            binary_gap = next - prev - 1
        cnt += 1
    return binary_gap
profile
https://github.com/JadenHeo

0개의 댓글