개념 요약
- 한가지 문제를 한번만 풀도록 만드는 알고리즘이다.
- 문제를 여러번 풀어 반복하지 않도록 하여 실행시간을 줄여준다.
- 규칙에 대한 점화식을 도출하여 푸는 방법이다.
- Memoization : 한 번 계산된 결과를 저장해 두었다가 활용하는 방식으로 중복 계산을 줄이는 것.
Ex. 피보나치 수열
TOP-DOWN
int fiboData[100] = {0, };
int fibo(int n)
{
if (n <= 2)
return (1);
if (fiboData[n] == 0)
fiboData[n] = fibo(n - 1) + fibo(n - 2);
return (fiboData[n]);
}
BOTTOM-UP
int fiboData[100] = {0, };
int fibo(int n)
{
fiboData[0] = 0;
fiboData[1] = 1;
for (int i = 2; i <= n; ++i)
fiboData[i] = fiboData[i - 1] + fiboData[i - 2];
return (fiboData[n]);
}
'CS공부 > Algorithm' 카테고리의 다른 글
최소 공통 조상(Lowest Common Ancestor) (0) | 2022.06.30 |
---|---|
최장 증가 수열(Longest Increasing Sequence) (0) | 2022.06.29 |
DFS & BFS (0) | 2022.06.29 |
해시 테이블(Hash Table) (0) | 2022.06.23 |
이분 탐색(Binary Search) (0) | 2022.06.22 |