Algorithm(BOJ, Python)/Dynamic Programing

[백준_1788] 피보나치 수의 확장 python

kurooru 2022. 8. 7. 12:58

설계를 짜고 보니

f와 g가 짝수 홀수 기준으로 대칭을 이루고 있다는 사실을 발견했다.

# f 설계
f = [
    0 for _ in range(1000001)
]

# f 초기설정
f[0] = 0
f[1] = 1

# f 채워넣기
for i in range(2, 1000001):
    f[i] = (f[i-2] + f[i-1]) % 1000000000

# n 입력
n = int(input())

# n == 0 일 경우
if n == 0:
    print(0)
    print(0)

# n > 0 일 경우
elif n > 0:
    print(1)
    print(f[n])

# n < 0 일 경우
else:
    # n이 짝수이면,
    if n % 2 == 0:
        # 음수
        print(-1)
        # 값 출력
        print(f[n * -1])
    # n이 홀수이면
    else:
        # 양수
        print(1)
        # 값 출력
        print(f[n * -1])