복잡도에 가장 영향을 많이 끼치는 항의 상수인자를 빼고 나머지항을 없애서복잡도를나타내는표기법!
상수시간 시간 복잡도 O(1)
: 입력 크기와 상관없이 일정한 시간 복잡도를 가지는 것
(e.g. : 입력과 출력, 곱하기, 간단한 비교if문, 배열의 인덱스)
#include<iostream>
using namespace std;
int N, cnt;
void Func(int N) {
cnt++;
cout << cnt << '\n';
if (N == 0) return;
for (int i = 0; i < 3; i++) {
Func(N - 1);
}
return;
}
int main() {
cin >> N;
Func(N);
return 0;
}
이 함수의 시간복잡도를 점화식으로~
N=1일때 cnt = 4(1+3^1)
N=2일때 cnt = 13 (+9 =1+ 3^2)
N=3일때 cnt = 40(+27= 3^3)
N=4일때 cnt = 121(+81 = 3^4)
.
.
.
즉 등비수열의 합이다~
그러므로.. 가장 주요한 영향을 주는 3^n을 빼고 나머지를 제외
즉 이 코드의 시간 복잡도는 = 3^n
시간 복잡도는 왜 중요할까?
시간복잡도를 O(n^2)을 O(n)으로 줄인다는 건 4초였던 코드를 2초로 또는 9초였던 코드를 3초로 개선했다는 의미!
어떨 때 시간복잡도를 고려해야할까?
OPENAI 왈
vector 벡터 (0) | 2024.12.14 |
---|---|
자료구조 별 Big O 시간 복잡도 (1) | 2024.12.13 |
Doubly linked List 03 Delete Node (2) | 2024.12.11 |
Doubly Linked List 02 (0) | 2024.12.11 |
Doubly Linked List (2) | 2024.12.11 |