08 01 - nolsigan/nolsigan.github.io GitHub Wiki
Algorithm
| Algorithm μ λ΄μ©μ λλΆλΆ 'μκ³ λ¦¬μ¦ ν΄κ²° μ λ΅'μ μμ½ν κ²μ λλ€.
λμ κ³νλ²
λμ κ³νλ²μ ν° μλ―Έμμ λΆν μ 볡과 κ°μ μ κ·Ό λ°©μμ μλ―Ένλ€.
μ΄ λ¬Έμ μ λ΅μ μ¬λ¬ λ² κ³μ°νλ λμ ν λ²λ§ κ³μ°νκ³ κ³μ° κ²°κ³Όλ₯Ό μ¬νμ©ν¨μΌλ‘μ¨ μλμ ν₯μμ κΎν μ μλ€.
- κ°μ μ μ₯ν΄ λλ λ©λͺ¨λ¦¬μ μ₯μλ₯Ό μΊμ(cache)
- μ€λ³΅λλ λΆλΆ λ¬Έμ (overlapping subproblems)
μ΄μ κ°μ΄ ν¨μμ κ²°κ³Όλ₯Ό μ μ₯νλ μ₯μλ₯Ό λ§λ ¨ν΄ λκ³ , ν λ² κ³μ°ν κ°μ μ μ₯ν΄ λλ€ μ¬νμ©νλ μ΅μ ν κΈ°λ²μ λ©λͺ¨μ΄μ μ΄μ (memoization)μ΄λΌ λΆλ₯Έλ€.
μ°Έμ‘°μ ν¬λͺ μ± (referential transparency)
ν¨μμ λ°ν κ°μ΄ κ·Έ μ λ ₯ κ°λ§μΌλ‘ κ²°μ λλμ§μ μ¬λΆλ₯Ό μ°Έμ‘°μ ν¬λͺ μ±μ΄λΌ νλ€.
ꡬν ν¨ν΄
- νμ κΈ°μ μ¬λ‘λ₯Ό μ μΌ λ¨Όμ μ²λ¦¬
- ν¨μμ λ°ν κ°μ΄ νμ 0 μ΄μμ΄λ©΄ μ΄κΈ°κ°μ -1λ‘ μ€μ
- reference (&)μ μ¬μ©μΌλ‘ κ°μ λ³νκ³Ό μ μ₯μ νλ²μ ν¨
μκ° λ³΅μ‘λ
(μ‘΄μ¬νλ λΆλΆ λ¬Έμ μ μ) X (ν λΆλΆ λ¬Έμ λ₯Ό ν λ νμν λ°λ³΅λ¬Έμ μν νμ)
μμ νμκ³Όμ κ΄κ³
μμ νμμΌλ‘ λ΅μ ꡬν λ νν κ°μ₯ λ¬Έμ κ° λλ κ²μ, μνλ λ΅μ μλλ° μ 체 λ΅μ κ°μλ 무μ§λ§μ§νκ² λ§μ κ²½μ°λ€.
λμ κ³νλ²μ μ¬μ©νλ©΄ μμ νμμ΄ λ§λλ κ²½λ‘μ μκ° λ§€μ° μ»€λ λΆλ¦¬λ ν¨μμ κ²½μ°μ μκ° μ νμ μ΄λ―λ‘ λΉλκΈ°μ§μ μ리μ μν΄ μ€λ³΅μΌλ‘ ν΄κ²°λλ λ¬Έμ κ° νμ μ‘΄μ¬νλ€.
μ΅μ λΆλΆ ꡬ쑰
νμ κ³Όμ μμ μ§κΈκΉμ§μ κ²½λ‘μ 무κ΄νκ² νμ¬ λΆλΆ λ¬Έμ λ₯Ό ν΄κ²°ν μ μμΌλ©΄ μ΄λ₯Ό μ΅μ λΆλΆ ꡬ쑰λ₯Ό κ°λλ€κ³ νλ€.
λλΆλΆ μ§κ΄μ μ΄λΌ λ°λ‘ μ¦λͺ
μ΄ νμνμ§ μμ§λ§ κ·Έλ μ§ μμ κ²½μ° κ·λ₯λ², λμ°λ‘ μ¦λͺ
νκ² λλ€.
=> μ΅μ λΆλΆ ꡬ쑰λ₯Ό λ§μ‘±νλ λΆλΆ λ¬Έμ λ‘ μ λλλ λ₯λ ₯μ΄ λμ κ³νλ²μ μνλ λ°©λ²μ΄λ€!