[백준 BOJ_9461] 파도반 수열 Python 풀이

출처: 백준 온라인 저지

문제

BOJ_9461_1
BOJ_9461_2

풀이

파도반 수열이라 해서 피보나치 수열과 크게 다를 바가 없습니다.

피보나치 수열은 fib(N) = (N-1) + (N-2) 이라면, 파도반 수열은 (N-2) + (N-3) 입니다.

동적계획법으로 간단하게 cache[0], cache[1], cache[2]까지 각각 0, 1, 1로 초기화 해준 뒤 피보나치 수열을 구할 때와 숫자만 다르게 구해줍니다.

코드

def pado(n):
    if cache[n] == -1:
        cache[n] = pado(n-2) + pado(n-3)
    return cache[n]
T = int(input())
for _ in range(T):
    N = int(input())
    cache = [-1 for _ in range(101)]
    cache[0] = 0
    cache[1] = 1
    cache[2] = 1
    print(pado(N))

Leave a comment