알고리즘 문제/one_day_one_sol
[1day 1sol]피보나치 함수
재코딩
2022. 8. 31. 21:46
반응형
문제
https://www.acmicpc.net/problem/1003
1003번: 피보나치 함수
각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다.
www.acmicpc.net
구현
- 0의 개수: fib(n-1)의 값과 동일
- 1의 개수: fib(n)과 동일
코드
import sys
input = sys.stdin.readline
def fib(num, memo):
if num == 0:
return 0
elif num == 1:
return 1
else:
if num not in memo:
memo[num] = fib(num-1, memo) + fib(num-2, memo)
return memo[num]
else:
return memo[num]
t = int(input())
for _ in range(t):
n = int(input())
dictionary = dict()
if n == 0:
print(1, fib(n, dictionary))
else:
print(fib(n-1, dictionary), fib(n, dictionary))
느낀점
dp 문제는 문제의 규칙을 이해하는 것이 정말 중요하다는 생각이 들었다. 그저 기능구현을 생각하다가 오래 걸릴뻔한 문제였다.
반응형