Data Structures & Algorithms
[Algorithms] 동적 계획법(Dynamic Programming)-네트워크 선 자르기(Bottom up) / (Top Down) 2가지 방식
숄구-ml
2022. 5. 30. 11:16
1. Bottom Up 방식으로 풀이
가장 작은 부분 부터 직관적으로 풀어보자. 이 후 점화식을 이용하여 점차 큰 문제를 풀어나간다.
1
2
3
4
5
6
7
8
9
10
11
12
|
import sys
sys.stdin=open('input', 'r')
n = int(input())
arr = [0] * (n+1)
arr[1]=1
arr[2]=2
for i in range(3, n+1):
arr[i] = arr[i-1] + arr[i-2]
print(arr[n])
|
cs |
2. Top Down 방식으로 풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
def DFS(len):
if memo[len] > 0:
return memo[len]
if len == 1 or len == 2:
return len
else:
memo[len] = DFS(len-1) + DFS(len-2)
return memo[len]
if __name__=='__main__':
n = int(input())
memo = [0] * (n+1)
print(DFS(n))
|
cs |
728x90