Oh My Algorithm
Algorithm Guidecomplexity: O(log n)

피보나치 탐색 (Fibonacci Search)

피보나치 수열을 이용해 구간을 분할합니다. 나눗셈 없이 덧셈·뺄셈만으로 인덱스를 계산하므로, 나눗셈이 비싼 하드웨어나 CPU 캐시 친화적 접근이 필요한 환경에서 이진 탐색보다 빠를 수 있습니다.

01 Explore How It Works

Interactive Step-by-Step
Fibonacci Search
5
12
23
34
45
56
67
78
89
98

피보나치 탐색 시작. 피보나치 수열로 배열을 분할하며, 나눗셈 없이 덧셈·뺄셈만 사용해 CPU 캐시에 유리합니다.

Logic Node1 / 9

02 Understand It Simply

For Everyone
🔑Analogy

피보나치 수만큼 구간을 나눠, 나눗셈 없이 덧셈만으로 좁히는 것.

💡In Plain Words

피보나치 수열로 구간을 분할해 탐색합니다.

나눗셈 없이 덧셈·뺄셈만 써서 특정 하드웨어에서 유리해요.

📍Where It's Used
  • 나눗셈이 비싼 환경
  • 캐시 친화적 접근

03 Python Implementation

A clean, readable reference implementation of the core logic of 피보나치 탐색 (Fibonacci Search).

core_implementation.py
def fibonacci_search(arr, target):
    n = len(arr)
    fib_m2, fib_m1 = 0, 1
    fib_m = fib_m2 + fib_m1
    while fib_m < n:
        fib_m2, fib_m1 = fib_m1, fib_m
        fib_m = fib_m2 + fib_m1
    offset = -1
    while fib_m > 1:
        i = min(offset + fib_m2, n - 1)
        if arr[i] < target:
            fib_m, fib_m1 = fib_m1, fib_m2
            fib_m2 = fib_m - fib_m1
            offset = i
        elif arr[i] > target:
            fib_m = fib_m2
            fib_m1 -= fib_m2
            fib_m2 = fib_m - fib_m1
        else:
            return i
    return -1

04 Frequently Asked Questions

FAQ
What is 피보나치 탐색 (Fibonacci Search)?+

피보나치 수열을 이용해 구간을 분할합니다. 나눗셈 없이 덧셈·뺄셈만으로 인덱스를 계산하므로, 나눗셈이 비싼 하드웨어나 CPU 캐시 친화적 접근이 필요한 환경에서 이진 탐색보다 빠를 수 있습니다.

What is the time complexity of 피보나치 탐색 (Fibonacci Search)?+

The time complexity of 피보나치 탐색 (Fibonacci Search) is O(log n). Follow the step-by-step visualization to see exactly why.

Where is 피보나치 탐색 (Fibonacci Search) used?+

나눗셈이 비싼 환경, 캐시 친화적 접근.

What's a simple analogy for 피보나치 탐색 (Fibonacci Search)?+

피보나치 수만큼 구간을 나눠, 나눗셈 없이 덧셈만으로 좁히는 것.

Guide Progress0%