준호씨의 블로그

Codility - BinaryGap - Python 본문

개발이야기/PS - Problem Solving, 알고리즘

Codility - BinaryGap - Python

준호씨 2021. 3. 16. 20:47
반응형

 

 

BinaryGap coding task - Learn to Code - Codility

Find longest sequence of zeros in binary representation of an integer.

app.codility.com

문제: Binary Gap은 2진수에서 1 사이에 있는 연속된 0의 최대 시퀀스입니다. 예를 들어 9는 2진수로 1001이고 binary gap은 2입니다. 529는 2진수로 1000010001이고 binary gap은 두 개이고 각각 4와 3인데 최댓값은 4입니다. 20은 10100이고 binary gap은 1입니다. 15는 1111이고 binary gap은 없습니다. 32는 100000이고 binary gap이 없습니다. 없는 경우 0을 리턴합니다.

 

def solution(N):
    return max([len(x) for x in format(N, 'b').strip('0').split('1')])

 

  • format(N, 'b')의 는 N을 2진수로 변환합니다.
  • 1 사이에 있는 0의 개수를 구하는 거라 양쪽 끝에 있는 0을 버립니다.
  • '1'로 split 하면 연속된 '0'으로 이루어진 문자열로 구성된 배열이 리턴됩니다.
  • [len(x) for x in arr]로 문자열들의 길이로 구성된 배열을 만듭니다.
  • 길이들 중 가장 큰 값을 리턴합니다.

 

반응형
Comments