본문 바로가기
알고리즘/[python] 백준 BOJ

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

by Alan_Kim 2023. 4. 17.
728x90
반응형

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

 

1788번: 피보나치 수의 확장

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

www.acmicpc.net

 

문제해결

  • |n| >1 일 때 F[n] = F[n-1] + F[n-2] 를 이용해서 새로운 수를 F 리스트에 넣는다.
  • n을 음수로 확장시켰으 때 놀라운 규칙을 알면 끝이다.

음수와 양수의 절대값이 같을 때 피보나치 값도 절대값이 같다. 그리고 음수일 때 인덱스 짝수영역은 음수 홀수 영역은 양수이다.

CODE

n = int(input())
s = [0, 1]
for i in range(2, abs(n) + 1):
    s.append((s[i - 1] + s[i - 2]) % 1000000000)
if n % 2 == 0 and n < 0:
    print(-1)
elif n == 0:
    print(0)
else:
    print(1)
print(s[abs(n)])
728x90
반응형

댓글