[Codility / Python] BinaryGap
- Coding Test/Codility
- 2021. 6. 1.
1. BinaryGap [Python]
문제 출처
https://app.codility.com/programmers/lessons/1-iterations/binary_gap/
문제를 간단히 요약하면 임의의 양의 정수 N을 입력받으면
이진수로 변환하였을때 1과 1사이에 0이 연속적으로 몇개가있는지 , 그것의 최대값을 구하는 문제였다.
파이썬의 bin을 이용하여 이진수를 구할 수 있다.(반환 값은 스트링이다.)
예를들어 십진수 9는 1001 인데 이때 bin(9)를 쓰면 반환되는 값은 "0b1001"로 반환되기때문에 2번째 인덱스부터 슬라이싱 해서 0과 1만 뽑아준다.
그리고 문자열을 앞에서 부터 탐색하면서 1일때는 cnt 변수를 초기화해주고 최대값을 비교해준다.
0일때는 cnt를 계속 증가시켜주면서 연속된 0의 값을 갯수를 저장한다.
내 코드
def solution(N):
binaryString = bin(N)[2:]
maxVal = 0
cnt = 0
for i in binaryString:
if i == '1':
if maxVal < cnt:
maxVal = cnt
cnt = 0
else:
cnt += 1
return maxVal