다이나믹 프로그래밍은 한마디로 한 번 계산한 문제는 다시 계산하지 않도록 하는 알고리즘이다 큰 문제를 작은 문제로 나눠서 계산하는데, 작은 문제의 결과를 메모리에 저장하여 다시 계산하지 않도록 한다 다이나믹 프로그래밍은 문제가 다음의 조건을 만족할 때 사용할 수 있다고 함 1) 최적 부분 구조 : 큰 문제를 작은 문제로 나누고, 작은 문제의 답을 모아서 큰 문제를 해결 2) 중복 부분 문제 : 동일한 작은 문제를 반복적으로 해결해야할 때 가장 대표적인 예시로는 피보나치 수열이 있다 1 2 3 4 int fibo(int num){ if(n 2 > 1 10 > 9 > 3 > 1 두 가지 경우를 찾을 수 있다 수가 커졌을 때 이렇게 모든 경우를 찾으려면 답도 없다 이딴식으로는 제공된 시간 0.15초 안에 답을..