Guidelines

동적 κ³„νšλ²• 파이썬 κ΅¬ν˜„ 방법

λΆ€λΆ„ 문제의 κ²°κ³Όλ₯Ό μ €μž₯ν•˜κ³  μž¬μ‚¬μš©ν•˜λŠ” 동적 κ³„νšλ²•μ„ 파이썬 μ½”λ“œλ‘œ μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€.


1. ν•¨μˆ˜ μ •μ˜ 및 λ©”λͺ¨μ΄μ œμ΄μ…˜ ꡬ쑰 μ„€μ •

동적 κ³„νšλ²•μ€ 계산 κ²°κ³Όλ₯Ό μ €μž₯ν•˜κ³  μž¬μ‚¬μš©ν•˜λŠ” λ°©λ²•μž…λ‹ˆλ‹€. 이λ₯Ό μœ„ν•΄ λ©”λͺ¨μ΄μ œμ΄μ…˜μ„ μ‚¬μš©ν•©λ‹ˆλ‹€.

λ©”λͺ¨μ΄μ œμ΄μ…˜ ꡬ쑰 μ„€μ • μ˜ˆμ‹œ
def fibonacci(n, memo={}): if n in memo: return memo[n] # λ©”λͺ¨μ΄μ œμ΄μ…˜ if n <= 2: return 1 memo[n] = fibonacci(n - 1, memo) + fibonacci(n - 2, memo) return memo[n]

2. μž¬κ·€ 호좜 및 κ²°κ³Ό μ €μž₯

ν•¨μˆ˜λŠ” ν”Όλ³΄λ‚˜μΉ˜ μˆ˜μ—΄μ˜ (n)번째 값을 κ³„μ‚°ν•˜κ³ , 이λ₯Ό memo에 μ €μž₯ν•©λ‹ˆλ‹€. μ΄λ ‡κ²Œ μ €μž₯된 값은 μž¬μ‚¬μš©λ©λ‹ˆλ‹€.

μž¬κ·€ 호좜 및 κ²°κ³Ό μ €μž₯ μ˜ˆμ‹œ
if n in memo: return memo[n] if n <= 2: return 1 memo[n] = fibonacci(n - 1, memo) + fibonacci(n - 2, memo) return memo[n]

μ•Œκ³ λ¦¬μ¦˜ λ³΅μž‘λ„

  1. μ‹œκ°„ λ³΅μž‘λ„ (Time Complexity): O(n)

    • λ©”λͺ¨μ΄μ œμ΄μ…˜μ„ μ‚¬μš©ν•˜λŠ” ν”Όλ³΄λ‚˜μΉ˜ ν•¨μˆ˜μ˜ μ‹œκ°„ λ³΅μž‘λ„λŠ” O(n)μž…λ‹ˆλ‹€. 각 μˆ«μžμ— λŒ€ν•œ ν”Όλ³΄λ‚˜μΉ˜ 값은 ν•œ 번만 κ³„μ‚°λ˜λ©°, κ³„μ‚°λœ 값은 μ €μž₯λ˜μ–΄ μž¬μ‚¬μš©λ©λ‹ˆλ‹€.
  2. 곡간 λ³΅μž‘λ„ (Space Complexity): O(n)

    • λ©”λͺ¨μ΄μ œμ΄μ…˜μ„ μœ„ν•΄ μ‚¬μš©λ˜λŠ” μΆ”κ°€ λ©”λͺ¨λ¦¬ κ³΅κ°„μœΌλ‘œ 인해 곡간 λ³΅μž‘λ„λ„ O(n)μž…λ‹ˆλ‹€. 각 κ³„μ‚°λœ ν”Όλ³΄λ‚˜μΉ˜ μˆ˜λŠ” memo 사전에 μ €μž₯λ˜λ―€λ‘œ, n번째 수λ₯Ό κ³„μ‚°ν•˜κΈ° μœ„ν•΄ μ΅œλŒ€ n개의 곡간이 ν•„μš”ν•©λ‹ˆλ‹€.

Guidelines

AI Tutor

Publish

Design

Upload

Notes

Favorites

Help

Code Editor

Run
Generate

Execution Result