음수가 아닌 값 n이 있다고 가정하고 이진 표현에서 가장 긴 연속 1의 길이를 찾아야 합니다.
따라서 입력이 n =1469와 같으면 156의 이진 표현이 "10110111101"이므로 4개의 연속 1이 있으므로 출력은 4가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- 카운트:=0
- n이 0과 같지 않은 동안 do
- n :=n AND (왼쪽으로 1비트 이동 후 n)
- 카운트 :=카운트 + 1
- 반환 횟수
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
def solve(n): count = 0 while n != 0: n = n & (n << 1) count = count + 1 return count n = 1469 print(solve(n))
입력
1469
출력
4