1. Stack
스택은 자료 구조의 일종으로, 마지막에 삽입된 항목만을 제거하고 접근할 수 있다.
이러한 원리를 후입 선출(Last In First Out)이라고 부른다.
스택은 속도가 빠르다는 점이 장점이다. 마지막 항목이 제거될 것을 알기 때문에 찾기와 삽입이 상수 시간인 O(1)이다.
스택의 주요 메서드는 두 가지가 있다. 바로 Push와 Pop이다.
1 - 1) push
스택의 가장 마지막 인덱스에 데이터를 추가해준다.
1 - 2) pop
스택의 가장 마지막 인덱스의 데이터를 삭제한다.
스택의 push와 pop 메서드 모두 마지막 인덱스에서 일어나므로 시간 복잡도는 O(1)이 된다.
반면 특정 인덱스, 즉 예를 들어 n번째 데이터에 접근하기 위해서는 pop 메서드를 n번 호출해야 하므로 시간 복잡도는 O(n)이 된다.
2. Queue
큐는 스택과 달리 첫 번째 항목만을 제거할 수 있는 자료 구조다.
이러한 원리를 선입선출(First In First Out)이라고 한다. 연산이 상수 시간이라는 점이 스택과 마찬가지로 장점이다.
큐의 주요 메서드도 두 가지가 있다. 바로 Dequeue와 Enqueue이다.
2 - 1) dequeue
스택의 첫 번째 데이터를 삭제한다.
2 - 2) enqueue
스택의 가장 마지막 인덱스의 데이터를 추가한다.
Queue의 dequeue와 enqueue 메서드도 스택과 마찬가지로 첫 번째 or 마지막 인덱스에서 일어나므로 시간 복잡도는 O(1)이 된다.
반면 특정 인덱스, 즉 예를 들어 n번째 데이터에 접근하기 위해서는 dequeue 메서드를 n번 호출해야 하므로 시간 복잡도는 O(n)이 된다.
스택과 큐의 구현은 사실 크게 어렵지 않아서 따로 코드를 첨부하진 않아도 될 것 같다.
'CodeStates' 카테고리의 다른 글
IM 8일차 (Hash Table) (0) | 2021.01.20 |
---|---|
IM 4일차 (Class) (0) | 2021.01.19 |
IM 4일차 (Pesudoclassical) (0) | 2021.01.15 |
IM 4일차 (자바스크립트에서 객체의 작동 원리) (0) | 2021.01.14 |
IM 4일차 (OOP와 4가지 특징) (0) | 2021.01.14 |