코테준비/알고리즘

DP 다이나믹 프로그래밍

아놀드금자 2023. 8. 9. 16:02
728x90

작은문제로 쪼개서 -> 값을 재활용하기

DP를 사용하면 재귀나 완전탐색보다 효율적으로 문제를 풀 수 있다

 

ex) 피보나치의 경우...

f(n) = f(n-1)+f(n-2) 

재귀 사용시 복잡도: O(n^2)

 

dp 사용시 복잡도: O(n)

 

 

dp를 사용할수 있는 조건

1. 큰 문제를 작은 문제들로 나눌 수 있는가(동일한 작은문제들이 반복)

2. 작은 부분 문제의 값이 그것을 포함하는 큰 문제에서도 동일한가

 

 

dp에서 중요한것 

- 점화식세우기

- memoization: 앞에서 계산한 값을 배열에 저장했다가 필요할 때 재사용

 

구현방법

top down

bottom up

 

 

728x90

'코테준비 > 알고리즘' 카테고리의 다른 글

유클리드 호제법  (0) 2023.09.05
백트래킹  (0) 2023.08.24
#4963 섬의 개수  (0) 2023.07.30
#2178 미로탐색  (0) 2023.07.27
2차원 리스트를 90도 회전하는 함수  (0) 2023.07.08