f[n] = (0이 출력되는 횟수, 1이 출력되는 횟수) 생성
f의 초기값은 f[0] = (1, 0) , f[1] = (0, 1)
f[2] = (f[2 - 1][0] + f[2 - 2][0], f[2 - 1][1] + f[2 - 2][1] )
.
.
.
f[n] = (f[n - 1][0] + f[n - 2][0], f[n - 1][1] + f[n - 2][1])
f = dict()
f[0] = (1, 0) #0출력 횟수, 1출력 횟수
f[1] = (0, 1)
def fibonacci(n):
if n not in f:
f[n] = (fibonacci(n - 1)[0] + fibonacci(n - 2)[0], fibonacci(n - 1)[1] + fibonacci(n - 2)[1])
return f[n]
for _ in range(int(input())):
zero, one = fibonacci(int(input()))
print(zero, one)
📝 딕셔너리를 사용하는 이유?
f[n]을 저장해놓음으로써 다음에 f[n]이 필요할 때, 새로 계산하지 않고 바로 가져올 수 있음.