문제풀이
- 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
'알고리즘풀이' 카테고리의 다른 글
LeetCode: Reverse Bits, 비트 뒤집기 (0) | 2021.03.23 |
---|---|
LeetCode: Hamming Distance, 해밍 거리 (0) | 2021.03.21 |
Leetcode: Roman to Integer (0) | 2021.03.18 |
LeetCode: Is Power Of Three (0) | 2021.03.16 |
LeetCode: Best Time to Buy and Sell Stock (0) | 2021.03.01 |