Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
Tags
- 블렌더
- csharp
- level1
- 도넛튜토리얼
- blender
- 비트연산
- 백준
- leetcode
- blender4.0
- 블렌더튜토리얼
- AI
- 코딩테스트
- 단계별로 풀어보기
- 카드뉴스
- 3d스터디
- 3d모델링
- Python
- cs기초
- 포토샵
- 3D그래픽
- 프로그래머스
- 단계별문제풀이
- CS
- 파이썬
- 알고리즘
- 자바스크립트
- c언어
- 블렌더도넛
- boj
- Photoshop
Archives
- Today
- Total
슬로우도파민
백준 2747 - 피보나치 수 (파이썬) 본문
2747번: 피보나치 수
피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가
www.acmicpc.net
오늘은 DP의 기본인 피보나치 수를 풀어봤다.
전에 풀어봤던 건데 top-down, bottom-up의 두가지 방식으로 다시 풀어봤다.
Top Down
# TOP DOWN
memo = {0:0, 1:1}
def fibo(n):
if n in memo:
return memo[n]
else:
memo[n] = fibo(n-1) + fibo(n-2)
return memo[n]
print(fibo(int(input())))
먼저, top-down 방식은 딕셔너리로 초기 값을 저장해놓는다.
그리고 딕셔너리에 내가 찾는 값이 있는지 확인한 후
없다면 재귀함수를 통해 딕셔너리에 그 값을 저장한다.
Bottom Up
#BOTTOM UP
memo = {0:0, 1:1}
def fibo(n):
for i in range(2, n+1):
memo[i] = memo[i-1] + memo[i-2]
return memo[n]
print(fibo(int(input())))
bottom-up 방식도 마찬가지로 딕셔너리에 초기 값을 저장한다.
그리고 for문을 돌려서, 딕셔너리에 없는 가장 작은 값부터 그 값들을 쌓아나간다.
그러나 bottom-up 방식은 재귀함수를 쓰지 않는다.
오직 딕셔너리 값들에 의존하여 내가 원하는 값을 찾아나간다.
'개발기록 > 자료구조 & 알고리즘' 카테고리의 다른 글
| 백준 1152 - 단어의 개수 (파이썬) (0) | 2021.01.12 |
|---|---|
| 백준 1157 - 단어공부 (파이썬) (0) | 2021.01.11 |
| 백준 1463 - 1로 만들기 (파이썬, DP) (0) | 2021.01.08 |
| 백준 2908 - 상수 (파이썬) (0) | 2021.01.08 |
| 백준 2675 - 문자열 반복(파이썬) (0) | 2021.01.08 |