꾸준히 합시다
백준 파이썬 1003번: 피보나치 함수 본문
문제 유형: 다이나믹 프로그래밍
# Solution 1
test_case = int(input())
for _ in range(test_case):
n = int(input())
k = n - 1
a, b = 0, 1
while k > 0:
a, b = b, a + b
k -= 1
if n == 0:
print(1, 0)
else:
print(a, b)
우선 fibonacci(N)을 호출했을 때 fibonacci(1)과 fibonacci(0)이 몇 번 호출되었는지 표로 정리해보면 아래와 같다.
N | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
fibonacci(N) | 0 | 1 | 1 | 2 | 3 | 5 | 8 | 13 | 21 |
0이 호출된 횟수 | 1 | 0 | 1 | 1 | 2 | 3 | 5 | 8 | 13 |
1이 호출된 횟수 | 0 | 1 | 1 | 2 | 3 | 5 | 8 | 13 | 21 |
결국 호출 횟수 또한 피보나치 수열을 따르고 있다는 걸 알 수 있다. fibonacci(N)과 1이 호출된 횟수는 같고 0이 호출된 횟수는 fibonacci(N-1)과 동일하다.
이에 따라 구현해주고 fibonacci(0)일 경우만 예외 처리해준다.
'코딩 테스트 문제 풀이' 카테고리의 다른 글
백준 파이썬 2875번: 대회 or 인턴 (0) | 2021.03.18 |
---|---|
백준 파이썬 2455번: 지능형 기차 (0) | 2021.03.17 |
백준 파이썬 1076번: 저항 (0) | 2021.03.17 |
백준 파이썬 10250번: ACM 호텔 (0) | 2021.03.16 |
백준 파이썬 18883번: N M 찍기 (0) | 2021.03.16 |
Comments