먼저, Stack의 ADT를 알아보자.
ADT란 추상자료형이라고도 하며, 데이터를 구체적으로 구현하는 방식은 생략하고, 데이터의 추상적인 형태와 데이터를 이루는 방법만을 정해 놓은 것.
자바스크립트에서는 배열을 이용해 스택을 간단하게 구현할 수 있다.
class Stack {
constructor() {
this._arr = [];
}
push(item) {
this._arr.push(item);
}
pop() {
return this._arr.pop();
}
peek() {
return this._arr[this._arr.length - 1];
}
}
const stack = new Stack();
stack.push(1);
stack.push(2);
stack.push(3);
stack.pop(); // 3
Operation | Big-O |
---|---|
Access | O(n) |
Search | O(n) |
Insert(push) | O(1) |
Delete(pop) | O(1) |
삽입과 삭제는 top에서 이루어지기 때문에, O(1)만큼의 시간이 걸린다.
즉, 스택은 서로 관계가 있는 여러 작업을 연달아 수행하며, 이전의 작업 내용을 저장해둘 필요가 있을때 널리 사용된다.