[java] 스택을 이용한 상태 기반 머신 구현하기
스택은 자료를 저장하고 관리하는 자료구조로, 상태 기반 머신을 구현하는 데에 유용하게 사용될 수 있습니다. 상태 기반 머신은 주어진 입력에 따라 여러 상태를 변경하는 동작을 수행하는 시스템입니다.
스택(Stack) 개념
스택은 후입선출(Last-In, First-Out) 형식으로 동작합니다. 즉, 가장 최근에 삽입한 항목이 가장 먼저 삭제되는 구조입니다. 스택은 push(삽입)과 pop(삭제) 연산을 통해 항목을 관리할 수 있습니다.
상태 기반 머신(State Machine)
상태 기반 머신은 여러 상태와 상태 간의 전이(transition)를 정의하여 동작하는 시스템입니다. 각 상태는 주어진 입력에 따라 다른 상태로 전이할 수 있습니다. 이러한 상태 전이를 관리하기 위해 스택을 사용할 수 있습니다.
Java로 상태 기반 머신 구현하기
다음은 Java 언어를 사용하여 스택을 이용한 상태 기반 머신을 구현하는 예제 코드입니다.
import java.util.Stack;
public class StateMachine {
private Stack<String> stateStack;
public StateMachine() {
stateStack = new Stack<>();
}
public void pushState(String state) {
stateStack.push(state);
}
public void popState() {
stateStack.pop();
}
public String getCurrentState() {
return stateStack.peek();
}
public boolean isStateEmpty() {
return stateStack.isEmpty();
}
public static void main(String[] args) {
StateMachine stateMachine = new StateMachine();
// 상태 push
stateMachine.pushState("State A");
System.out.println("Current State: " + stateMachine.getCurrentState());
// 상태 push
stateMachine.pushState("State B");
System.out.println("Current State: " + stateMachine.getCurrentState());
// 상태 pop
stateMachine.popState();
System.out.println("Current State: " + stateMachine.getCurrentState());
// 상태 pop
stateMachine.popState();
System.out.println("Current State: " + stateMachine.getCurrentState());
System.out.println("Is State Empty? " + stateMachine.isStateEmpty());
}
}
위의 예제 코드에서는 Stack<String>
을 사용하여 상태 스택을 선언하고, pushState
, popState
, getCurrentState
, isStateEmpty
메서드를 구현하여 스택을 조작합니다. main
메서드에서는 상태를 push하고 pop하여 현재 상태를 출력하고, 상태 스택이 비어있는지 확인합니다.
이와 같은 방식으로 스택을 활용하여 상태 기반 머신을 구현할 수 있습니다.