Write a function that takes the binary representation of a positive integer and returns the number of
set bits
it has (also known as the
Hamming weight
).
Example 1:
Input: n = 11Output: 3Explanation:The input binary string 1011 has a total of three set bits.
Example 2:
Input: n = 128Output: 1Explanation:The input binary string 10000000 has a total of one set bit.
Example 3:
Input: n = 2147483645Output: 30Explanation:The input binary string 1111111111111111111111111111101 has a total of thirty set bits.
Constraints:
1 <= n <= 231 - 1
처음 접근 방식
class Solution {
func hammingWeight(_ n: Int) -> Int {
let answer = String(n, radix: 2)
let arrayAnswer = Array(answer)
var total = 0
for item in arrayAnswer {
if item == "1" {
total += 1
}
}
return total
}
}
더 간단한 접근
class Solution {
func hammingWeight(_ n: Int) -> Int {
return String(n, radix: 2).filter { $0 == "1" }.count
}
}
나는 고차함수를 적용하는 것에 약한 것 같다. 간단히 filter를 사용하면 될 것을, 반복문을 돌리는 방식으로 접근했다. 그리고 10진수를 다른 진수로 바꾸는 radix 를 배웠다.
'Algorithm > Leetcode' 카테고리의 다른 글
매일 LeetCode 풀기 | Maximum Subarray (0) | 2024.08.21 |
---|---|
매일 LeetCode 풀기 | 3Sums (0) | 2024.08.21 |
매일 LeetCode 풀기 | Sum of Two Integers (0) | 2024.08.18 |
매일 LeetCode 풀기 | Product of Array Except Self (0) | 2024.08.15 |
매일 LeetCode 풀기 | Contains Duplicate (0) | 2024.08.14 |