https://www.acmicpc.net/problem/1788

 

1788번: 피보나치 수의 확장

첫째 줄에 F(n)이 양수이면 1, 0이면 0, 음수이면 -1을 출력한다. 둘째 줄에는 F(n)의 절댓값을 출력한다. 이 수가 충분히 커질 수 있으므로, 절댓값을 1,000,000,000으로 나눈 나머지를 출력한다.

www.acmicpc.net

풀이

다이나믹 프로그래밍을 통해서 문제를 풀어주었습니다.

코드

# 1788번 피보나치 수의 확장
n = int(input())
dp = [0, 1, 1]
for i in range(3, abs(n)+1):
    dp.append((dp[i-2] + dp[i-1])%1000000000)
        
if n > 0:
    print(1, dp[-1], sep="\n")
elif n < 0:
    if n % 2 == 0:
        sign = -1
    else:
        sign = 1       
    print(sign, dp[-1], sep="\n")
else:
    print(0, 0)

출력결과

개발자 성현