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