분할정복법
큰 문제를 작은 문제로 분할해 재귀적으로 해결
a와 n 입력받아 a^n 값 구하는 power1(a,n)을 분할 정복법으로 해보자.
power1(a, n) = power1(a, n-1)*a 이다.
1 | def power1(a, n): |
power1의 걸리는 시간 T(n)은
T(n) = T(n-1)+c = O(n)
다른 방법은 없을까? power2를 보자
1 | def power2(a, n): |
power2의 걸리는 시간 T(n)은
T(n) = 2T(n/2)+c=O(n)
자세히 보면 power2에는 중복 사용되는 메소드가 있다.
이걸 좀 더 개선해보자
1 | def power3(a, n): |
T(n) = T(n/2)+c = O(logn)