본문 바로가기
알고리즘 문제/자료구조&알고리즘

다이나믹 프로그래밍

by 태윤2 2020. 10. 22.
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
32
33
34
  # 한 번 계산된 결과를 메모이제이션(Memoization)하기 위한 리스트 초기화
= [0* 100
 
# 피보나치 함수(Fibonacci Function)를 재귀함수로 구현 (탑다운 다이나믹 프로그래밍)
def fibo(x):
    print('f('+str(x)+')', end=' ')
    # 종료 조건(1 혹은 2일 때 1을 반환)
    if x == 1 or x == 2:
        return 1
    # 이미 계산한 적 있는 문제라면 그대로 반환
    if d[x] != 0:
        return d[x]
    # 아직 계산하지 않은 문제라면 점화식에 따라서 피보나치 결과 반환
    d[x] = fibo(x - 1+ fibo(x - 2)
    return d[x]
 
print(fibo(6))
 
# 앞서 계산된 결과를 저장하기 위한 DP 테이블 초기화
= [0* 100
 
# 첫 번째 피보나치 수와 두 번째 피보나치 수는 1
d[1= 1
d[2= 1
= 99
 
# 피보나치 함수(Fibonacci Function) 반복문으로 구현(보텀업 다이나믹 프로그래밍)
for i in range(3, n + 1):
    d[i] = d[i - 1+ d[i - 2]
 
print(d[n])
 
  
 
cs

 

 

 

'알고리즘 문제 > 자료구조&알고리즘' 카테고리의 다른 글

최단 경로  (0) 2020.10.23
다이나믹 프로그래밍 예제  (0) 2020.10.22
다이나믹 프로그래밍  (0) 2020.10.22
이진 탐색 예제  (0) 2020.10.22
이진 탐색  (0) 2020.10.22