Guidelines

λ©”λͺ¨ν™”λ‘œ μž¬κ·€ ν•¨μˆ˜μ˜ νš¨μœ¨μ„± 높이기

μž¬κ·€ ν•¨μˆ˜λŠ” 자기 μžμ‹ μ„ ν˜ΈμΆœν•˜λŠ” ν•¨μˆ˜μž…λ‹ˆλ‹€.

ν•˜μ§€λ§Œ μ΄λŸ¬ν•œ 접근법은 νŠΉμ • μ‘°κ±΄μ—μ„œ λΉ„νš¨μœ¨μ μΌ 수 있으며, 이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ 'λ©”λͺ¨ν™”(memoization)' 기법이 μ‚¬μš©λ©λ‹ˆλ‹€.


λ©”λͺ¨ν™”λž€?

λ©”λͺ¨ν™”λŠ” μž¬κ·€ ν•¨μˆ˜μ—μ„œ λ™μΌν•œ 계산을 λ°˜λ³΅ν•˜μ§€ μ•Šλ„λ‘ 이전 계산 κ²°κ³Όλ₯Ό μ €μž₯ν•˜λŠ” κΈ°μˆ μž…λ‹ˆλ‹€. λ©”λͺ¨ν™”λŠ” 특히 λ³΅μž‘ν•œ κ³„μ‚°μ—μ„œ μ„±λŠ₯을 크게 ν–₯μƒμ‹œν‚΅λ‹ˆλ‹€.

λ©”λͺ¨ν™”λ₯Ό μ‚¬μš©ν•œ ν”Όλ³΄λ‚˜μΉ˜ μˆ˜μ—΄ μ˜ˆμ‹œ
def fibonacci(n, memo={}): if n in memo: # 이미 κ³„μ‚°ν•œ 값이라면 return memo[n] # μ €μž₯된 값을 λ°˜ν™˜ if n <= 1: # μ’…λ£Œ 쑰건 return n # 0 λ˜λŠ” 1 λ°˜ν™˜ memo[n] = fibonacci(n-1, memo) + fibonacci(n-2, memo) # 계산 κ²°κ³Ό μ €μž₯ return memo[n] # μ €μž₯된 κ°’ λ°˜ν™˜ print(fibonacci(10)) # 55

λ©”λͺ¨ν™”λŠ” 쀑볡 계산을 μ œκ±°ν•˜μ—¬ ν”„λ‘œκ·Έλž¨μ˜ μ‹€ν–‰ 속도λ₯Ό λ†’μž…λ‹ˆλ‹€.


μœ μ˜μ‚¬ν•­

  • λ©”λͺ¨ν™”λ₯Ό μ‚¬μš©ν•˜λŠ” 경우 μΆ”κ°€ λ©”λͺ¨λ¦¬κ°€ ν•„μš”ν•©λ‹ˆλ‹€.

  • λͺ¨λ“  μž¬κ·€ ν•¨μˆ˜κ°€ λ©”λͺ¨ν™”λ₯Ό ν•„μš”λ‘œ ν•˜λŠ” 것은 μ•„λ‹ˆλ©°, μ‚¬μš© μ—¬λΆ€λŠ” ν•¨μˆ˜μ˜ νŠΉμ„±κ³Ό μš”κ΅¬ 사항에 따라 κ²°μ •ν•΄μ•Ό ν•©λ‹ˆλ‹€.

Guidelines

AI Tutor

Publish

Design

Upload

Notes

Favorites

Help

Code Editor

Run
Generate

Execution Result