본문 바로가기
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