배열은 가장 기본적인 자료구조이다. 배열은 생성시 설정된 크기가 고정되고, 각 셀에는 인덱스 번호가 부여된다. 배열을 활용 시 부여된 인덱스를 통해 해당 셀 안에 있는 데이터에 접근할 수 있다.
[시간 복잡도]
자료구조 | 가져오기(값) | 추가하기 | 삭제하기 |
---|---|---|---|
배열(Array) | O(n) | O(n) | O(n) |
[장점]
[단점]
스택은 순서가 보존되는 선형 데이터 구조 유형이다. 가장 마지막 요소부터 처리하는 LIFO(Last In First Out)특성을 갖고있다. 스택은 쌓여있는 접시 더미와 같이 동작한다. 새로운 접시가 쌓일때도 맨 위에서 쌓이고, 접시를 가져갈 때도 맨 위에서 가져가는 것과 같다.
[시간 복잡도]
자료구조 | 가져오기(값) | 추가하기 | 삭제하기 |
---|---|---|---|
스택(Stack) | O(n) | O(1) | O(1) |
[장점]
[단점]
큐는 스택과 비슷하지만 가장 먼저 입력된 요소를 처리하는 FIFO(First In First Out)특성을 갖고있다. 큐는 놀이공원에서 서는 줄과 같이 동작한다. 사람들이 맨 끝에 줄을 서고, 맨 앞에서부터 놀이기구에 탑승하는 것과 같다.
[시간 복잡도]
자료구조 | 가져오기(값) | 추가하기 | 삭제하기 |
---|---|---|---|
큐(Queue) | O(n) | O(1) | O(1) |
[장점]
[단점]
연결리스트는 데이터의 물리적 배치를 사용하지 않는 구조이다. 각 요소는 노드라는 것에 저장되는데 다음 노드 연결에 대한 포인터 또는 주소가 포함된 또 다른 노드에 저장된다. 모든 노드가 연결될때 까지 반복이 되어 노드의 연결로 이루어진 자료구조다.
연결 리스트에는 단일 연결 리스트, 이중 연결 리스트가 있다.
[시간 복잡도]
자료구조 | 가져오기(값) | 추가하기 | 삭제하기 |
---|---|---|---|
연결리스트(Linked list) | O(n) | O(1) | O(1) |
[장점]
[단점]
해시 테이블은 대량의 정보를 저장하고 특정 요소를 효율적으로 검색할 수 있는 복잡한 데이터구조이다. 이 데이터 구조는 테이블 내에 더 작은 서브그룹인 버킷에 키와 값의 쌍을 저장한다. 해시 테이블은 키를 저장할 때 메모리 공간을 덜 사용할 수 있도록 키를 해시 함수를 통해 해시라는 특정 숫자값으로 변환한다. 해시 테이블은 필요할 때만 메모리 크기를 늘리고, 가능한 작은 크기를 유지한다.
키는 검색 시 사용되는 문자열이고 값은 해당 키와 쌍을 이룬 데이터다. 검색된 각 키는 미리 정의된 해시함수를 통해 해시값을 받고 버킷을 가리킨다. 해시 숫자는 버킷의 인덱스를 의미한다. 버킷에서 검색할 때 입력된 키를 찾고 해당 키와 관련된 값을 반환한다.
[시간 복잡도]
자료구조 | 가져오기(값) | 추가하기 | 삭제하기 |
---|---|---|---|
해시테이블(Hash Table) | O(1) | O(1) | O(1) |
[장점]
[단점]
그래프틑 노드 사이에 엣지가 있는 자료구조이다. 그래프는 방향이 있을 수 있고 없을 수도 있다. 그래프로 구조를 어떻게 설계 그리고 무엇을 하고 싶냐에 따라 시간복잡도가 달라진다.
[시간 복잡도]
자료구조 | 가져오기(값) | 노드/엣지 추가하기 | 노드 삭제하기 | 엣지 삭제하기 |
---|---|---|---|---|
그래프(Graph) | O(N+E) | O(1) | O(N+E) | O(E) |
[장점]
[단점]