https://www.acmicpc.net/problem/13301
풀이 과정
def fibo(x):
if x==0:
return dictionary[x]
elif x==1:
return dictionary[x]
if x in dictionary:
return dictionary[x]
else:
dictionary[x]=fibo(x-1)+fibo(x-2)
return dictionary[x]
n=int(input())
dictionary={0:4, 1:6}
print(fibo(n-1))
피보나치에 대한 문제풀이 레파토리 아래 링크를 참조한다.
yaneodoo2.tistory.com/15?category=978881
몇 개의 항을 나열하면서 계산을 해 보면, 피보나치 수열이 유지되는 것을 알 수 있다.
따라서 dictionary에 첫 번째 항과 두 번째 항의 값을 따로 값을 넣어준다.
if x in dictionary:
return dictionary[x]
구하려는 x항이 이미 dictionary에 있는 지 본다. x는 dictionary 내에서 "key" 값을 찾는다.
그리고 key 값이 탐색된다면, 이에 맞는 값을 리턴한다.
예를 들어 {0:1}이라는 dictionary가 있으면 0이라는 값을 찾는 것이다.
else:
dictionary[x]=fibo(x-1)+fibo(x-2)
return dictionary[x]
구하려는 x항이 dictionary에 없다면 dictionary[x]=fibo(x-1)+fibo(x-2)로 새로 값을 넣어준다.
'파이썬 > 파이썬 알고리즘' 카테고리의 다른 글
파이썬 백준 13458번 시험 감독 (0) | 2021.03.23 |
---|---|
파이썬 백준 2828번 사과 담기 게임 (0) | 2021.02.23 |
파이썬 백준 8393번 수학 합 (0) | 2021.02.16 |
파이썬 백준 2742번 제문 는하력출 지까N 터부1 (0) | 2021.02.12 |
파이썬 백준 2438번 별 찍기 - 1 (0) | 2021.02.12 |
댓글