μ΄μ κ°λ€μ μ¬νμ©νλ€.
- μ£μ§ μΌμ΄μ€λ 0μ λ°ννλ€.
- 0, 1μ 미리 κ³μ°νλ€.
>>μ μνν κ²°κ³Ό + μ§/ν μ¬λΆλ‘ μΈν 1μ λν΄μ ν΄κ²°ν΄μ€λ€.
-
μ΄μ§μ
1001μ κ²½μ°100κ³μ°ν κ²°κ΄κ°μμ1μ λν΄μ£Όλ©΄ λλ€. -
μ΄μ§μ
1010μ κ²½μ°101κ³μ°ν κ²°κ΄κ°μμ0μ λν΄μ£Όλ©΄ λλ€. -
μ루μ μ°Έκ³ :
i & (i-1)μ°μ°μ ν΅ν΄ κ³μ°νλ€.- 2μ μ κ³±μμΈ κ²½μ°
0μ΄ λμ 1μ λνλ©΄ λλ€. - μλ κ²½μ°λ μμ§μ μ λͺ¨λ₯΄κ² λ€.
- 2μ μ κ³±μμΈ κ²½μ°
- Time complexity:
$$O(n)$$
:nν¬κΈ°μ λ°°μ΄μ λͺ¨λλ₯Ό μννλ€.
- Space complexity:
$$O(n)$$
:ν¬κΈ° nμ λ°°μ΄μ μ μΈνλ€.
func countBits(n int) []int {
if n == 0 {
return []int{0}
}
ans := make([]int, n+1, n+1)
ans[0], ans[1] = 0, 1
for i := 2; i <= n; i++ {
ans[i] = ans[i>>1] + i&1
}
return ans
}
func countBitsSolution(n int) []int {
res := make([]int, n+1)
for i := 1; i <= n; i++ {
res[i] = res[i&(i-1)] + 1
}
return res
}