1003. 피보나치 함수
https://www.acmicpc.net/problem/1003
1003번: 피보나치 함수
각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다.
www.acmicpc.net
내 풀이 - 성공
zero = 0
one = 0
# dp[n] = [zero, one, value]
dp = {}
dp[0] = [1, 0, 0]
dp[1] = [0, 1, 1]
def fibonacci(n):
global zero, one, dp
if n in dp:
zero += dp[n][0]
one += dp[n][1]
return dp[n][2]
else:
value = fibonacci(n-1) + fibonacci(n-2)
dp[n] = [zero, one, value]
return value
T = int(input())
cases = []
for i in range(T):
n = int(input())
cases.append(n)
for c in cases:
fibonacci(c)
print(zero, one)
zero = 0
one = 0
dp[n] = [zero, one, value] 의 형태로 저장
=> [0 의 개수, 1 의 개수, 피보나치 값]
0, 1 의 경우는 미리 저장해두고
입력받은 케이스들 모두 fibonacci 함수 돌리면서
각 숫자들의 dp 저장
=> 이미 본 숫자들은 dp 값을 가져와서 사용
'알고리즘 > 백준' 카테고리의 다른 글
[백준 - SILVER 1] 1074. Z - Python3 (0) | 2021.09.27 |
---|---|
[백준 - SILVER 5] 1181. 단어 정렬 - Python3 (0) | 2021.09.27 |
[백준 - SILVER 2] 1012. 유기농 배추 - Python3 (0) | 2021.09.25 |
[백준 - BRONZE 3] 1085. 직사각형에서 탈출 - Python3 (0) | 2021.09.25 |
[백준 - SILVER 5] 1018. 체스판 다시 칠하기 - Python3 (0) | 2021.09.25 |
댓글