스택(Stack)은 컴퓨터 과학에서 중요한 자료 구조 중 하나이다. 스택은 항목들이 추가되고 삭제되는 끝이 한 개만 있는 '한정적 접근'의 선형 자료 구조이다. 이러한 특성 때문에 스택은 '후입선출'(LIFO, Last-In-First-Out) 원칙을 따르는 것으로 알려져 있다. 즉, 가장 최근에 스택에 추가된 항목이 가장 먼저 제거되는 순서를 따른다.
스택에서는 주로 다음 네 가지 기본 연산이 사용된다.
- Push: 스택의 상단에 항목을 추가한다.
- Pop: 스택의 상단에 있는 항목을 제거하고 반환한다. 이 연산을 수행하면, 스택에서 항목이 제거된다.
- Peek/Top: 스택의 상단에 있는 항목을 반환하지만 제거하지는 않는다.
- isEmpty: 스택이 비어 있는지 확인한다.
스택은 다양한 애플리케이션에서 사용된다. 함수 호출 스택, 실행 취소 스택, 브라우저의 이전 페이지/다음 페이지 구현 등 여러 분야에서 스택의 개념이 활용된다. 또한, 스택은 다른 복잡한 알고리즘, 예를 들어 깊이 우선 탐색(DFS)에서도 중요한 역할을 한다.
import java.util.Stack;
public class Main {
public static void main(String[] args) {
Stack<Integer> stack = new Stack<>();
stack.push(1);
stack.push(2);
stack.push(3);
System.out.println("Stack: " + stack);
int removedElement = stack.pop();
System.out.println("Popped element: " + removedElement);
System.out.println("Stack after pop operation: " + stack);
int peekedElement = stack.peek();
System.out.println("Peeked element: " + peekedElement);
System.out.println("Stack after peek operation: " + stack);
boolean isEmpty = stack.isEmpty();
System.out.println("Is stack empty? " + isEmpty);
}
}
Integer 타입의 Stack 객체를 생성하고, push 메소드를 사용하여 스택에 원소를 추가하고, pop 메소드를 사용하여 가장 위의 원소를 제거하고, peek 메소드를 사용하여 가장 위의 원소를 확인하며, isEmpty 메소드를 사용하여 스택이 비어 있는지 확인한다.
'CS > 알고리즘' 카테고리의 다른 글
동적 계산법 (0) | 2023.06.07 |
---|---|
큐(Queue) (0) | 2023.06.07 |
이진 검색 트리(Binary Search Tree, BST) (0) | 2023.05.30 |
해싱(Hashing) (0) | 2023.05.30 |
이진 검색(Binary Search) (0) | 2023.05.30 |