Stack이란?
저번 시간에서는 선입선출(FIFO)인 Queue에 대해 알아봤습니다. 이번 포스팅에서는 Stack에 대해 알아보도록 하겠습니다.
자바에서 스택(Stack)은 데이터를 일렬로 나열하여 관리하는 자료 구조 중 하나로, “후입선출” (Last-In-First-Out, LIFO) 원칙을 따릅니다. 쉽게 말해, 스택에 쌓인 데이터들 중 가장 최근에 들어온 데이터가 가장 먼저 빠져나가는 형식입니다.
그럼 자바에서 스택(Stack)을 어떻게 사용하는지 알아보겠습니다.
Stack 사용법
자바에서 Stack을 선언하려면 java.util 패키지로부터 stack을 import를 한 뒤 Stack<Element> stack = new Stack<>() 의 형식으로 선언해주시면 됩니다.
import java.util.Stack; Stack<Integer> stack = new Stack<>(); Stack<String> stack = new Stack<>();
Stack 주요 함수
일부 주요한 Stack 메서드들은 다음과 같습니다:
- push(E e): 스택의 맨 위에 요소를 추가합니다.
- pop(): 스택의 맨 위에서 요소를 제거하고 반환합니다.
- peek(): 스택의 맨 위의 요소를 반환하지만 제거하지는 않습니다.
- isEmpty(): 스택이 비어있는지 여부를 확인합니다.
- size(): 스택에 저장된 요소의 개수를 반환합니다.
예시
import java.util.Stack; public class StackExample { public static void main(String[] args) { Stack stack = new Stack<>(); // 요소 추가 stack.push("Apple"); stack.push("Banana"); System.out.println("Stack: " + stack); // 요소 제거 String poppedItem = stack.pop(); System.out.println("Popped from Stack: " + poppedItem); // 맨 위 요소 확인 String peekedItem = stack.peek(); System.out.println("Peeked Item: " + peekedItem); // 루프를 사용한 요소 처리 while (!stack.isEmpty()) { String item = stack.pop(); System.out.println("Processed Item: " + item); } System.out.println("Final Stack: " + stack); } }
위 예시와 같이, push를 통해 스택에 요소를 넣어주고, pop을 통해 맨 마지막 요소를 제거하며 해당 요소를 반환합니다. 마지막으로 peek을 통해 스택의 맨 위 요소(제거하지 않음)를 확인할 수 있습니다.
마치며
지금까지 Stack에 대한 간단한 설명 및 예시를 살펴보았습니다. 아래 첨부된 링크는 Stack 관련 면접 질문이니 참고하시길 바라며, 다음 시간에도 JAVA 프로그래밍에서 자주 쓰이는 유용한 정보를 가져오도록 하겠습니다.
답글 남기기