책읽기

[파이썬 알고리즘 인터뷰][비트연산] 1비트의 개수

pythaac 2021. 8. 16. 16:37
이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다. 

출처 : https://www.onlybook.co.kr/entry/algorithm-interview

 

문제 정의

unsigned int 입력의 1비트 개수 출력

 

책에서 구현된 코드

# 문자열 사용
class Solution:
    def hammingWeight(self, n: int) -> int:
        return bin(n).count('1')
        
# 문자열 없이 구현
class Solution:
    def hammingWeight(self, n: int) -> int:
        count = 0
        while n:
            # 1을 뺀 값과 AND 연산 횟수 측정
            n &= n - 1
            count += 1
        return count

 

기억해야할 기법

  •  

 

내가 구현한 코드

# 문자열 사용
class Solution:
    def hammingWeight(self, n: int) -> int:
        return sum(map(int, bin(n)[2:]))
        
# 문자열 없이 구현
class Solution:
    def hammingWeight(self, n: int) -> int:
        cnt = 0
        while n:
            cnt += n & 0b1
            n >>= 1
        return cnt
  • 비슷하게 구현했다