Oh My Algorithm
Algorithm Guidecomplexity: O(n)

피보나치 수열 (DP)

동적 계획법(Dynamic Programming)으로 이전 부분해(subsolution)를 테이블에 저장하고 재사용해 중복 계산을 제거합니다. 단순 재귀 O(2^n)을 O(n)으로 끌어내리는 가장 대표적인 메모이제이션 예시입니다.

01 Explore How It Works

Interactive Step-by-Step
Fibonacci DP
dp[0]·
dp[1]·
dp[2]·
dp[3]·
dp[4]·
dp[5]·
dp[6]·
dp[7]·
dp[8]·
dp[9]·
dp[10]·

피보나치 DP를 시작합니다. n=10까지의 dp 테이블을 채워 dp[10]을 구합니다. 부분해를 저장·재사용해 O(n)에 수렴합니다.

Logic Node1 / 13

02 Understand It Simply

For Everyone
🔑Analogy

계단을 오를 때 이미 센 칸 수를 메모해 두고 다시 세지 않는 것.

💡In Plain Words

작은 문제의 답을 표에 저장해 두고 재사용합니다.

단순 재귀의 중복 계산을 없애 O(2^n)을 O(n)으로 줄여요.

📍Where It's Used
  • 중복 부분문제가 있는 계산
  • DP 입문

03 Python Implementation

A clean, readable reference implementation of the core logic of 피보나치 수열 (DP).

core_implementation.py
def fibonacci(n):
    dp = [0] * (n + 1)
    dp[1] = 1
    for i in range(2, n + 1):
        dp[i] = dp[i-1] + dp[i-2]
    return dp[n]

04 Frequently Asked Questions

FAQ
What is 피보나치 수열 (DP)?+

동적 계획법(Dynamic Programming)으로 이전 부분해(subsolution)를 테이블에 저장하고 재사용해 중복 계산을 제거합니다. 단순 재귀 O(2^n)을 O(n)으로 끌어내리는 가장 대표적인 메모이제이션 예시입니다.

What is the time complexity of 피보나치 수열 (DP)?+

The time complexity of 피보나치 수열 (DP) is O(n). Follow the step-by-step visualization to see exactly why.

Where is 피보나치 수열 (DP) used?+

중복 부분문제가 있는 계산, DP 입문.

What's a simple analogy for 피보나치 수열 (DP)?+

계단을 오를 때 이미 센 칸 수를 메모해 두고 다시 세지 않는 것.

Guide Progress0%