개발이야기/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]로 문자열들의 길이로 구성된 배열을 만듭니다.
- 길이들 중 가장 큰 값을 리턴합니다.
반응형