반응형
Stack은 후입선출(LIFO: Last-In-First-Out) 구조를 가진 자료구조로,
가장 나중에 들어온 데이터가 가장 먼저 나가는 특징이 있습니다.
이번 예제에서는 Coin 객체를 Stack에 저장하고, 순서대로 꺼내는 과정을 통해
스택의 동작 원리를 확인해 보겠습니다.
📦 Coin.java
package ch15.sec05;
public class Coin {
private int value;
public Coin(int value) {
this.setValue(value);
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
}
📌 예제 코드
package ch15.sec05;
import java.util.Stack;
public class StackExample {
public static void main(String[] args) {
Stack<Coin> coinBox = new Stack<Coin>();
coinBox.push(new Coin(100));
coinBox.push(new Coin(50));
coinBox.push(new Coin(500));
coinBox.push(new Coin(10));
while (!coinBox.isEmpty()) {
Coin coin = coinBox.pop();
System.out.println("꺼낸 동전 : " + coin.getValue() + "원");
}
}
}
💻 실행 결과
꺼낸 동전 : 10원
꺼낸 동전 : 500원
꺼낸 동전 : 50원
꺼낸 동전 : 100원
💬 코드 설명
- Coin 클래스는 동전의 가치를 저장하는 간단한 객체입니다.
- Stack<Coin>을 생성한 뒤, push() 메서드를 이용해 동전을 쌓아 올립니다.
- pop() 메서드는 가장 위에 있는 동전을 꺼내며, LIFO 구조에 따라
가장 나중에 들어온 10원이 가장 먼저 출력됩니다. - isEmpty()를 통해 스택이 비어 있을 때까지 반복하며,
모든 동전을 꺼내 출력합니다.
💡 포인트 정리
- Stack은 후입선출 구조로, push()로 넣고 pop()으로 꺼냅니다.
- peek()를 사용하면 꺼내지 않고 가장 위에 있는 요소만 확인할 수 있습니다.
- 반복 처리를 할 때는 isEmpty()를 통해 비어 있는지 체크하는 것이 안전합니다.
- Stack은 자료를 순차적으로 되돌리는 로직, 예를 들어 되돌리기(Undo), 괄호 검사, 웹 브라우저 히스토리 등에 활용됩니다.
📌정리하자면, Stack은 간단하지만 매우 강력한 자료구조입니다.
이번 예제를 통해 데이터가 쌓이고 꺼내지는 순서를 시각적으로 이해하셨을 것입니다.
실무에서도 흔히 쓰이며, 알고리즘 문제에서도 자주 등장하는 개념이므로 꼭 익혀두시길 바랍니다.
'Java > 자바 정리' 카테고리의 다른 글
152. 불변 컬렉션 생성하기 – List.of(), copyOf(), Set.of() 등 활용 (0) | 2025.05.21 |
---|---|
151. HashMap을 동기화하기 – Collections.synchronizedMap() (0) | 2025.05.21 |
150. Queue 컬렉션 – 선입선출 메시지 처리 방식 (0) | 2025.05.21 |
148. TreeSet에 정렬 기준 주입하기 – Comparator 활용 (0) | 2025.05.21 |
147. TreeSet과 Comparable – 사용자 정의 객체 정렬하기 (0) | 2025.05.21 |
146. TreeMap으로 정렬과 구간 검색하기 (1) | 2025.05.21 |