Java/자바 정리

149. Stack 컬렉션 – 후입선출 구조 실습

코딩하는냥이 2025. 5. 21. 13:03
반응형

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은 간단하지만 매우 강력한 자료구조입니다.
이번 예제를 통해 데이터가 쌓이고 꺼내지는 순서를 시각적으로 이해하셨을 것입니다.
실무에서도 흔히 쓰이며, 알고리즘 문제에서도 자주 등장하는 개념이므로 꼭 익혀두시길 바랍니다.