백준 1003번: 피보나치 함수 - 실버 3

Minhee kang·2021년 9월 23일
0

✔ 풀이 방법

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]이 필요할 때, 새로 계산하지 않고 바로 가져올 수 있음.

0개의 댓글