자료구조는 효율적으로 데이터를 관리하고 수정, 삭제, 탐색, 저장할 수 있는 데이터 집합이다. 어떠한 비즈니스로직을 처리할 때 그 로직에 가장 효과적인 자료구조를 찾아서 쓰는 것이 중요한데 이를 위해 자료구조를 명확히 알아야 한다.
복잡도는 시간복잡도와 공간복잡도로 나뉘어진다.
시간복잡도란 입력크기에 대해 어떠한 알고리즘이 실행되는데 걸리는 시간이며 주요로직의 반복횟수를 중점을 측정된다.
하지만 시간이라는 것은 컴퓨터 사양 등 여러 요소에 영향을 받는다.
따라서 시간복잡도를 설명할 때는 시간이 아니라 어떠한 알고리즘이 주어진 입력크기를 기반으로 어떠한 로직이 몇번 반복되었는가를 중점으로 설명한다.
예를 들어 다음 코드는
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 << i << '/n/';
}
}
}
for(int i = 0; i < n; I++){
if(true) cout << i << '/n/';
}
10 n ^ 2 + n 만큼 반복된다.
이것이 시간복잡도이다.