Stack
Stack은 LIFO(Last In, First Out) 원칙을 따르는 자료구조
즉, 마지막에 삽입된 데이터가 가장 먼저 제거되는 방식으로, 후입선출 이라고 함
Java 에서는 Stack 클래스로 구현이 되어 있음.
java.util.Stack 클래스는 Vector 클래스를 상속받은 클래스로, 기본적인 스택 연산을 제공함.
package stack;
import java.util.Stack;
public class Stack01 {
public static void main(String[] args) {
Stack<Integer> stack = new Stack<>();
stack.push(4);
stack.push(3);
stack.push(2);
stack.push(1);
System.out.println(" 스택 상태 : " + stack);
// peek() 메소드로 맨 위 요소 확인
System.out.println(" 맨 위 요소 : " + stack.peek());
// pop() 메소드를 사용하여 맨 위 요소 제거 및 반환
System.out.println(" 제거된 요소 : " + stack.pop());
System.out.println(" 스택 상태 : " + stack);
// 스택이 비었는지 확인
System.out.println(" 스택 empty 체크 : " + stack.empty());
}
}
활용
- 괄호 검사 : 소스 코드나 수식에서 괄호의 짝이 맞는지 확인하는데 사용
- 재귀 호출 처리 : 시스템의 재귀 호출은 내부적으로 스택을 사용하여 함수 호출 순서를 관리
- 역순 문자열 출력 : 문자열을 스택에 넣고 역순으로 출력할때 유용
- 탐색 알고리즘 : DFS(깊이 우선 탐색)알고리즘에서 스택이 사용됨
단점
- java.util.Stack 클래스는 스레드 안전한 구조로 설계되어 성능 면에서 다소 비효율적일 수 있음.
또한, 상속 계층에서 Vector를 상속받아 스택 자료구조 외의 불필요한 기능도 포함하고 있음.
관련 문제
[프로그래머스] 같은 숫자는 싫어
https://forcetyty.tistory.com/59
'자료구조 & 알고리즘 > 자료구조 & 알고리즘' 카테고리의 다른 글
[자료구조] 선형자료구조 (1) | 2024.09.13 |
---|---|
[자료구조] Queue 구현한 간단한 대기열 시스템 (0) | 2024.09.12 |
[자료구조] Queue (0) | 2024.09.11 |
자료구조 및 알고리즘 <시간복잡도> (0) | 2024.03.15 |
[자료구조] 자료구조 개념&종류 (0) | 2019.06.08 |