[알고리즘] 1비트의 개수

June·2021년 2월 1일
0

알고리즘

목록 보기
63/260

1비트의 개수

책 풀이

class Solution:
    def hammingWeight(self, n: int) -> int:
        return bin(n ^ 0).count('1')

위의 풀이는 파이썬의 편한 풀이이나 범용적인 풀이가 아니다.
1을 뺀 값과 AND 연산을 할 때마다 비트가 1씩 빠지게 된다.

>> bin(0b1000 & 0b0111)
'0b0'
>> bin(0b1010 & 0b1001)
'0b1000'
>> bin(0b1011 & 0b1010)
'0b1010'

책 풀이 2

class Solution:
    def hammingWeight(self, n: int) -> int:
        count = 0
        while n:
            # 1을 뺀 값과 AND 연산 횟수 측정
            n &= (n-1)
            count += 1
        return count

0개의 댓글