시간 복잡도는 알고리즘이 주어진 입력 크기에 대해 실행되는 데 걸리는 시간을 측정하는 방법 중 하나 주로 주요 로직의 반복 횟수를 중점으로 측정되며, 컴퓨터 사양 등 여러 요소에 영향을 받을 수 있다
console.time("test");
let sum = 0;
for (let i = 0; i < 1000000; i++) {
sum += 1;
}
console.timeEnd("test");
// test: 1.575ms
빅오표기법은 알고리즘의 성능을 나타내는 데에 사용되는 표기법 중 하나. 가장 영향을 많이 미치는 항의 1. 상수 인자를 제거하고 2. 나머지 항을 없애서 복잡도를 나타낸다
for(int i = 0; i < 10; i++){ // 10번
for(int j =0; j < n; j++){ //n번
for(int k = 0; k < n; k++){ //n번
if(true) cout << k << '\n'; //단순한 로직
}
}
}
for(int i = 0; i < n; i++){ // n번
if(true) cout << i << '\n';
}
시간 복잡도는 주로 효율적인 코드로 개선하는 데 기준이 된다.
공간 복잡도는 알고리즘이 실행되는 동안 필요한 메모리 공간의 양. 정적 및 동적 변수, 배열, 맵 등이 포함됨
int a[10000000];
void f(){
int b[1004];
}
int main(){
}
int a[128000000]
까지 선언 가능