250x250
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 |
Tags
- html
- sql
- alter
- map
- Union-find
- date
- string
- 스택
- javascript
- GC로그수집
- Calendar
- NIO
- 큐
- Properties
- CSS
- deque
- spring boot
- 힙덤프
- Java
- JPA
- scanner
- priority_queue
- dfs
- List
- 리소스모니터링
- BFS
- math
- union_find
- 스프링부트
- set
Archives
- Today
- Total
매일 조금씩
다이나믹 프로그래밍 (Dynamic Programming) 본문
728x90
반응형
다이나믹 프로그래밍은 중복되는 연산을 줄이기 위한 방법이다.
대표적인 예로 피보나치 수열이 있다.
탑다운 방식과 보텀업 방식이 있다.
탑다운 방식은 재귀를 사용하고,
보텀업 방식은 반복문을 사용한다.
[어떤 문제에 적용이 될까?]
알고리즘 문제를 풀때, 주어진 문제가 다이나믹 프로그래밍 유형임을 파악하는 것이 중요하다.
가장 먼저 그리디, 구현, 완전 탐색 등의 아이디어로 문제를 해결할 수 있는지 검토할 수 있다.
다른 알고리즘으로 풀이 방법이 떠오르지 않으면 다이나믹 프로그래밍을 고려해보자.
일단 재귀함수로 비효율적인 완전 탐색 프로그램을 작성한 뒤에 (탑다운) 작은 문제에서 구한 답이
큰 문제에서 그대로 사용될 수 있으면, 코드를 개선하는 방법을 사용할 수 있다.
일반적인 코딩 테스트 수준에서는 기본 유형의 다이나믹 프로그래밍 문제가 출제되는 경우가 많다.
728x90
반응형
'알고리즘 > ** 개념 **' 카테고리의 다른 글
최단경로 알고리즘(2) - 플로이드 워셜 (0) | 2021.05.16 |
---|---|
최단경로 알고리즘(1) - 다익스트라 (0) | 2021.05.16 |
DFS / BFS 개념 (0) | 2021.04.16 |
C++ new와 malloc의 차이, delete()의 필요성 (0) | 2021.02.04 |
시간 복잡도 (0) | 2021.02.04 |