νμ΄ λ μ§ : 2025.04.30
λ¬Έμ μ ν : Summer/Winter Coding(~2018)
λ¬Έμ μ λͺ© : μ νμ μκ° μ΄λ
λ¬Έμ λ§ν¬ : https://school.programmers.co.kr/learn/courses/30/lessons/12980
Intuition
- μ£Όμ΄μ§ nλ§νΌ μ΄λνλ λ° νμν μ΅μνμ μ ν νμλ₯Ό ꡬνλ λ¬Έμ μ΄λ€.
- μκ°μ΄λμ
νμ¬κΉμ§μ μ΄λ거리 * 2
μ μμΉλ‘ μ΄λνκ³ κ±΄μ μ§λ₯Ό μ¬μ©νμ§ μλλ€. - μ νλ μ΄λνλλ§νΌμ 건μ μ§λ₯Ό μ¬μ©νλ€.
- μκ°μ΄λμ
그리λ μκ³ λ¦¬μ¦
: νμ μ ν κ°λ₯ν μ΅μ μ λ°©λ²μ μ ννλ€.- μκ°μ΄λμ μ΅λν λ§μ΄ μ°κ³ , μκ°μ΄λμ ν μ μμ λλ§ μ νλ₯Ό ν΄μΌ νλ€.
- 6μ κ²½μ°, [ μ ν(0 + 1 = 1) → μκ°μ΄λ(1 * 2 = 2) → μ ν(2 + 1 = 3) → μκ°μ΄λ(3 * 2 = 6) ] ⇒ μ΅μ 2λ²μ μ νκ° νμνλ€.
- 6μμ 0κΉμ§ μμΌλ‘ μκ°ν΄λ³΄λ©΄ μκ°μ΄λμ ν μ μλ μΉΈμ μ§μ λ²μ§Έ μΉΈμ΄κ³ , μκ°μ΄λμ ν μ μλ μΉΈμ νμ λ²μ§Έ μΉΈμ΄λ€.
λΉνΈ μ‘°μ
: κ·μΉμ΄ 2μ λ°°μ, μ§/νκ³Ό κ΄λ ¨ μμ- 6μ μ΄μ§μλ‘ λ³ννλ©΄ 1010μ΄κ³ , [ μ ν → μκ°μ΄λ → μ ν → μκ°μ΄λ ] ⇒ μ΅μ 2λ²μ μ νκ° νμνλ€.
- nμ μ΄μ§μλ‘ λ°κΎΈλ©΄ 1μ΄ μλ μ리λ§λ€ μ ννλ κ²κ³Ό κ°λ€.
Approach
- 건μ μ§μ μ¬μ©λμ μ μ₯ν λ³μ(used)λ₯Ό μ μΈνλ€. μ΄ κ°μ μ ν νμμ κ°λ€.
- nμ΄ 0μ΄ λ λκΉμ§ λ°λ³΅νλ€.
- nμ΄ μ§μλ©΄ nμ 2λ‘ λλλ€. (μκ°μ΄λ, 건μ μ§ μ¬μ© μμ)
- nμ΄ νμλ©΄ nμμ 1μ λΉΌκ³ , usedλ₯Ό 1 λλ¦°λ€. (μ ν, μ νν λ§νΌ 건μ μ§ μ¬μ©)
- usedλ₯Ό λ°ννλ€.
Complexity
- Time complexity :
O(log n)
- μ΄λν΄μΌ νλ 거리λ₯Ό nμ΄λΌκ³ ν λ κ³μ 2λ‘ λλ μ§λ―λ‘ O(log n)μ΄λ€.
- Splace complexity :
O(1)
- λ°°μ΄μ΄λ κ°μ²΄ λ±μ μΆκ°μ μΈ μ μ₯ 곡κ°μ μλ€.
Code (JS)
- 그리λ μκ³ λ¦¬μ¦
function solution(n) {
let used = 0;
while (n !== 0) {
if (n % 2 === 0) {
n /= 2;
} else {
n -= 1;
used += 1;
}
}
return used;
}
- λΉνΈ μ‘°μ
function solution(n) {
let used = 0;
while (n > 0) {
used += n & 1; // λ§μ§λ§ λΉνΈκ° 1μ΄λ©΄(=νμλ©΄) μ νκ° νμ
n >>= 1; // nμ μ€λ₯Έμͺ½μΌλ‘ 1λΉνΈ μ΄λ = n / 2
}
return used;
}
'μκ³ λ¦¬μ¦ λ¬Έμ νμ΄ > Programmers - Lv.2' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[νλ‘κ·Έλλ¨Έμ€ Lv.2] μμ΄ λλ§μκΈ° (0) | 2025.05.08 |
---|---|
[νλ‘κ·Έλλ¨Έμ€ Lv.2] ꡬλͺ λ³΄νΈ (0) | 2025.05.07 |
[νλ‘κ·Έλλ¨Έμ€ Lv.2] κ·€ κ³ λ₯΄κΈ° (0) | 2025.04.30 |
[νλ‘κ·Έλλ¨Έμ€ Lv.2] λ¬λ¦¬κΈ° κ²½μ£Ό (0) | 2025.04.22 |
[νλ‘κ·Έλλ¨Έμ€ Lv.2] μ«μμ νν (0) | 2025.04.21 |