알고리즘풀이
LeetCode: Number of 1 Bits
batterflyyin
2021. 3. 20. 09:32
문제풀이
- unsigned Int가 주어졌을 때 1 비트의 개수를 구하라. (정수에서 1비트의 개수를, 해밍 웨이트(Hamming weight)라고 불린다.)
문제 풀이
- 최대 32비트까지 검사하면 되므로 32번 순회한다.
- 첫번째 비트를 1과 AND 비트 연산하여 1이 나오는지 확인하여 합계를 계산해준다.
- 한번 순회가 끝나면 다음 비트를 검사해야 하므로, ">>" 연산을 사용하여 오른쪽으로 1 비트 옮긴다.
func hammingWeight(_ n: Int) -> Int {
var num = n
var total = 0
for _ in 0..<32 {
if num & 1 == 1 {
total += 1
}
num = num >> 1
}
return total
}
print(hammingWeight(3)) // 2
print(hammingWeight(256)) // 1
print(hammingWeight(-3)) // 31