해당 블로그는 '문제 해결력을 높이는 알고리즘과 자료구조' 책을 바탕으로 작성하였습니다
data structure : 자료를 가지고 있는 방법
쿼리(query): 자료 구조에 값을 넣어 관리하거나 자료 구조에서 원하는 값을 꺼내는 요구
주로 자료구조를 사용할때 쿼리 타입은 요소를 삽입, 삭제, 탐색가 있다
대량의 데이터가 있을 때 각각의 요소에 간단히 접근할 수 있는 자료구조
요소를 일렬로 나열하고 각 요소에 인덱스로 쉽게 접근할 수 있다
배열을 사용한 처리를 C++로 구현할 때는 주로 STL vector를 사용하면 편하다
예시 코드
#include <iostream>
#include <vector>
using namespaced std;
int main()
{
vector<int> a = {4, 3, 12, 7, 11, 1};
// 0번째 요소를 출력
cout << a[0] << endl;
// 두 번째 요소의 값을 5로 교체, 12 -> 5
a[2] = 5;
cout << a[2] << endl;
}
출력값 : 4 5
배열 안에서 요소 y직후에 바로 요소 x를 삽입하려면 요소 y가 어디있는 지 파악해야한다
선형탐색법(for문)으로 일단 탐색하여도 괜찮다 (시간복잡도O(N))
요소y를 탐색한 후 요소 x를 삽입하려면 x뒤에 오는 요소들을 한칸 씩 밀어야한다
결론적으로 시간복잡도가 O(N)이 된다


배열과 연결리스트 모두 특정 요소의 포함 여부를 탐색하는 데 O(N)의 시간복잡도가 걸린다
탐색에 빠른 시간이 걸리는 자료구조 : 해시테이블, 자가 균형 이진 탐색 트리
