[java] 자바로 스택 알고리즘 구현하기
스택은 후입선출(LIFO) 원리를 따르는 자료 구조로, 데이터를 쌓아 올리거나 꺼내는 동작을 제공합니다. 자바에서는 java.util
패키지에 있는 Stack
클래스를 사용하여 스택을 구현할 수 있습니다. 그러나 여기서는 직접 스택 알고리즘을 구현해보겠습니다.
스택 알고리즘 구현
public class Stack {
private int maxSize;
private long[] stackArray;
private int top;
public Stack(int size) {
maxSize = size;
stackArray = new long[maxSize];
top = -1;
}
public void push(long value) {
stackArray[++top] = value;
}
public long pop() {
return stackArray[top--];
}
public long peek() {
return stackArray[top];
}
public boolean isEmpty() {
return (top == -1);
}
public boolean isFull() {
return (top == maxSize - 1);
}
}
위의 코드는 Stack
클래스를 구현한 것입니다. 이 클래스는 push
메서드로 값을 스택에 추가하고, pop
메서드로 값을 스택에서 꺼낼 수 있습니다. 또한 peek
메서드로 스택의 맨 위 값을 확인하고, isEmpty
및 isFull
메서드로 스택이 비어 있는지 또는 가득 찼는지 여부를 확인할 수 있습니다.
스택 알고리즘 사용 예시
public class Main {
public static void main(String[] args) {
Stack stack = new Stack(5);
stack.push(10);
stack.push(20);
stack.push(30);
stack.push(40);
stack.push(50);
while (!stack.isEmpty()) {
long value = stack.pop();
System.out.println(value);
}
}
}
위의 예시에서는 Stack
클래스를 사용하여 스택을 생성하고, 값을 추가한 뒤 차례대로 꺼내어 출력하는 방법을 보여줍니다.
결론
이제 여러분은 자바를 사용하여 스택 알고리즘을 직접 구현하고 활용하는 방법을 알게 되었습니다. 이를 토대로 스택을 활용한 다양한 문제를 해결할 수 있을 것입니다. 스택 알고리즘에 대한 더 많은 학습과 응용을 통해 여러분의 프로그래밍 실력을 향상시키시기를 바랍니다.
참고 자료
- Oracle Java Documentation: Stack Class
- GeeksforGeeks: Stack Data Structure (Introduction and Program)