https://www.acmicpc.net/problem/1003
1003번: 피보나치 함수
각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다.
www.acmicpc.net
풀이
문제 이름부터 대놓고 피보나치 함수인데..
DP 써야겠죠? Top-Down 방식(재귀)로 구현함.
일반적으로 DP의 예시로 많이 나오는 게 피보나치 함수인데,
그거 생각하면서 풀었던 것 같다.
다만 원하는 결과값이 좀 다르므로, 잘 처리해주면 될 듯.
dp = dict() test = [int(input()) for _ in range(int(input()))] def fib(n): if dp.get(n, -1) != -1: return dp[n] elif n == 0: return [1, 0] elif n == 1: return [0, 1] else: dp[n] = [fib(n-1)[0]+fib(n-2)[0], fib(n-1)[1]+fib(n-2)[1]] return dp[n] for i in test: print(*fib(i))