Oh My Algorithm
Algorithm Guidecomplexity: O(log n)

피보나치 탐색 (Fibonacci Search)

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

01 알고리즘 작동 원리 탐색

Interactive Step-by-Step
TAP OR HOVER
Fibonacci Search
목표89
반복0
F(k)13
상태대기
5
12
23
34
45
56
67
78
89
98

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

Logic Node1 / 9

02 파이썬 구현 코드

피보나치 탐색 (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
Guide Progress0%