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
- 백준
- object detection
- 프로그래머스
- coding test
- Python
- 논문
- 알고리즘
- 내용추가
- computer vision
- 모두를 위한 딥러닝
- reinforcement learning
Archives
- Today
- Total
NISSO
[백준 10870] 피보나치 수 계산 - 재귀 / DP 본문
해당 문제는 재귀 카테고리에 있어서 재귀함수로 풀었다.
바로 전 문제가 팩토리얼 문제여서 재귀로는 쉽게 풀었다.
def fibo(n=int(input()), i=1):
if n>2:
return fibo(n-1) + fibo(n-2)
return 0 if n==0 else 1
print(fibo())
그리고 다른 코드를 구경(?)하는데 변수를 dp로 설정했더라.
알진 못해도 들어본 적은 있어서 바로 검색해봤다.
DP는 동적계획법 (Dynamic Programming)으로 상향식 접근법이며 실행시간이 현저히 줄어든다는 장점이 있다.
이전에 계산한 값을 메모리에 저장해 다시 계산하지 않도록 하는 Memoization 기법을 사용한다.
n = int(input())
dp = [j for j in range(n+1)]
for i in range(2,n+1):
dp[i] = dp[i-1] + dp[i-2]
print(dp[n])
DP로 피보나치 계산을 한 코드다.
함수를 반복적으로 불러올 필요 없이 리스트에 바로바로 저장해 마지막 값만 반환하면 된다.
최적화 문제 해결시 유용한 알고리즘이라고 할 수 있다.
'Coding Test' 카테고리의 다른 글
[백준 15651] 백트래킹 (완전탐색) (0) | 2021.06.27 |
---|---|
[백준 2108] 시간초과와 런타임에러 (0) | 2021.06.27 |
[백준 11729] 재귀함수로 하노이탑 이동하기 (0) | 2021.06.26 |
[백준 10872] 재귀함수로 팩토리얼 구현 (0) | 2021.06.25 |
[백준 4344] 평균은 넘겠지 (0) | 2021.06.25 |
Comments