λ©λͺ¨νλ‘ μ¬κ· ν¨μμ ν¨μ¨μ± λμ΄κΈ°
μ¬κ· ν¨μλ μκΈ° μμ μ νΈμΆνλ ν¨μλ‘, κ°μ κ³μ°μ λ°λ³΅νκ² λμ΄ μ±λ₯μ΄ μ νλ μ μμ΅λλ€.
μ΄λ¬ν λ¬Έμ μ μ ν΄κ²°νκΈ° μν΄ λ©λͺ¨ν(Memoization)
κΈ°λ²μ΄ μ¬μ©λ©λλ€.
λ©λͺ¨νλ?
λ©λͺ¨νλ ν¨μμ λ°ν κ°μ μ μ₯ν΄ λμλ€κ°, κ°μ μ λ ₯μ λν΄ ν¨μλ₯Ό λ€μ νΈμΆν λ μ μ₯λ κ°μ λ°ννλ κΈ°λ²μ λλ€.
λ©λͺ¨νλ₯Ό μ¬μ©νλ©΄ ν¨μμ λ°ν κ°μ μ μ₯ν΄ λμ΄ μ€λ³΅ κ³μ°μ λ°©μ§νκ³ , ν¨μμ μ€ν μλλ₯Ό λμΌ μ μμ΅λλ€.
def fibonacci(n): # λ©λͺ¨μ΄μ μ΄μ μ μ¬μ©ν λΉ λμ λ리 μμ± memo = {} def helper(x): # μ΄λ―Έ κ³μ°λ κ°μ΄ μμΌλ©΄ μ μ₯λ κ°μ λ°ν if x in memo: return memo[x] # μ’ λ£ μ‘°κ±΄: 0 λλ 1μΌ λ x λ°ν if x <= 1: return x # κ³μ° κ²°κ³Όλ₯Ό λ©λͺ¨μ΄μ μ΄μ λμ λ리μ μ μ₯ memo[x] = helper(x - 1) + helper(x - 2) return memo[x] # μ¬κ· ν¨μ νΈμΆ return helper(n) # 10λ²μ§Έ νΌλ³΄λμΉ μμ΄ κ° μΆλ ₯ print(fibonacci(10)) # 55
μ μ½λμμ memo
λμ
λ리λ₯Ό μ¬μ©ν΄ μ΄μ μ κ³μ°ν κ°μ μ μ₯νκ³ , μ΄λ―Έ κ³μ°ν κ°μ΄λΌλ©΄ μ μ₯λ κ°μ λ°νν©λλ€.
λμ
λ리μ λ΄κΈ°λ κ°μ μλμ κ°μ n
μ λν νΌλ³΄λμΉ μμ΄μ κ²°κ³Όμ
λλ€.
{ 2: 1, 3: 2, 4: 3, 5: 5, 6: 8, 7: 13, 8: 21, 9: 34, 10: 55 }
λ©λͺ¨νλ₯Ό μ¬μ©νλ©΄ ν¨μμ μ€ν μλλ₯Ό λμΌ μ μμΌλ©°, μ€λ³΅ κ³μ°μ λ°©μ§ν΄ μ±λ₯μ ν₯μμν¬ μ μμ΅λλ€.
νμ§λ§ κ³μ° κ²°κ³Όλ₯Ό μ μ₯ν΄ λκΈ° μν μΆκ°μ μΈ λ©λͺ¨λ¦¬κ° νμνλ―λ‘, λ©λͺ¨νλ₯Ό μ¬μ©ν λλ λ©λͺ¨λ¦¬ μ¬μ©λμ μ£Όμν΄μΌ ν©λλ€.
λ©λͺ¨ν(memoization)
μ μ£Όλ λͺ©μ μ 무μμΈκ°μ?
μ¬κ· ν¨μμ μ’ λ£ μ‘°κ±΄μ μ€μ νκΈ° μν΄
μ¬κ· ν¨μμ νΈμΆ νμλ₯Ό μ€μ΄κΈ° μν΄
λμΌν κ³μ°μ λ°λ³΅μ νΌνκΈ° μν΄
μ¬κ· ν¨μλ₯Ό λΉμ¬κ· ν¨μλ‘ λ³ννκΈ° μν΄
Guidelines
AI Tutor
Publish
Design
Upload
Notes
Favorites
Help
Code Editor
Execution Result