Algorithm
[Codility] Iterations - BinaryGap
by 파이현
2025. 9. 14.
☁️ 문제 설명
- 주어진 정수 N(양의 정수)를 이진수로 표현했을 때 가장 긴 binary gap의 길이 구하기
- binary gap: 1로 시작하고 1로 끝날 때, 그 사이에 있는 연속된 0들의 최대 길이
✨ 예시
- `N = 9`
- 이진수: 1001
- gap: 00
- 최대 길이: 2
- `N=529`
- 이진수: 1000010001
- gaps: 0000, 00
- 최대길이: 4
💡 풀이 아이디어
- 정수를 이진 문자열로 변환 `format(N, 'b')` 사용
- bin(N) 사용해도 가능 그 대신 0b로 시작하기 때문에 문자열 split 필요
- 0들의 구간을 찾아 길이 계산
- 그 중 최대값 반환
💻 코드
def solution(N):
binary_num = format(N,'b')
gaps = binary_num.split('1')
if len(gaps) <= 2:
return 0
max_gap = 0
for gap in gaps[1:-1]:
if len(gap) > max_gap:
max_gap = len(gap)
return max_gap