|
| 1 | +# Intuition |
| 2 | +<!-- Describe your first thoughts on how to solve this problem. --> |
| 3 | +μ΄μ κ°λ€μ μ¬νμ©νλ€. |
| 4 | +# Approach |
| 5 | +<!-- Describe your approach to solving the problem. --> |
| 6 | +1. μ£μ§ μΌμ΄μ€λ 0μ λ°ννλ€. |
| 7 | +2. 0, 1μ 미리 κ³μ°νλ€. |
| 8 | +3. `>>`μ μνν κ²°κ³Ό + μ§/ν μ¬λΆλ‘ μΈν 1μ λν΄μ ν΄κ²°ν΄μ€λ€. |
| 9 | +- μ΄μ§μ `1001`μ κ²½μ° `100` κ³μ°ν κ²°κ΄κ°μμ `1`μ λν΄μ£Όλ©΄ λλ€. |
| 10 | +- μ΄μ§μ `1010`μ κ²½μ° `101` κ³μ°ν κ²°κ΄κ°μμ `0`μ λν΄μ£Όλ©΄ λλ€. |
| 11 | + |
| 12 | +- μ루μ
μ°Έκ³ : `i & (i-1)` μ°μ°μ ν΅ν΄ κ³μ°νλ€. |
| 13 | + - 2μ μ κ³±μμΈ κ²½μ° `0`μ΄ λμ 1μ λνλ©΄ λλ€. |
| 14 | + - μλ κ²½μ°λ μμ§μ μ λͺ¨λ₯΄κ² λ€. |
| 15 | +# Complexity |
| 16 | +- Time complexity: $$O(n)$$ |
| 17 | +<!-- Add your time complexity here, e.g. $$O(n)$$ --> |
| 18 | +:`n`ν¬κΈ°μ λ°°μ΄μ λͺ¨λλ₯Ό μννλ€. |
| 19 | +- Space complexity: $$O(n)$$ |
| 20 | +<!-- Add your space complexity here, e.g. $$O(n)$$ --> |
| 21 | +:ν¬κΈ° `n`μ λ°°μ΄μ μ μΈνλ€. |
| 22 | +# Code |
| 23 | +```go |
| 24 | +func countBits(n int) []int { |
| 25 | + if n == 0 { |
| 26 | + return []int{0} |
| 27 | + } |
| 28 | + ans := make([]int, n+1, n+1) |
| 29 | + |
| 30 | + ans[0], ans[1] = 0, 1 |
| 31 | + |
| 32 | + for i := 2; i <= n; i++ { |
| 33 | + ans[i] = ans[i>>1] + i&1 |
| 34 | + } |
| 35 | + return ans |
| 36 | +} |
| 37 | + |
| 38 | +func countBitsSolution(n int) []int { |
| 39 | + res := make([]int, n+1) |
| 40 | + for i := 1; i <= n; i++ { |
| 41 | + res[i] = res[i&(i-1)] + 1 |
| 42 | + } |
| 43 | + return res |
| 44 | +} |
| 45 | +``` |
0 commit comments