[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 메서드로 스택의 맨 위 값을 확인하고, isEmptyisFull 메서드로 스택이 비어 있는지 또는 가득 찼는지 여부를 확인할 수 있습니다.

스택 알고리즘 사용 예시

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 클래스를 사용하여 스택을 생성하고, 값을 추가한 뒤 차례대로 꺼내어 출력하는 방법을 보여줍니다.

결론

이제 여러분은 자바를 사용하여 스택 알고리즘을 직접 구현하고 활용하는 방법을 알게 되었습니다. 이를 토대로 스택을 활용한 다양한 문제를 해결할 수 있을 것입니다. 스택 알고리즘에 대한 더 많은 학습과 응용을 통해 여러분의 프로그래밍 실력을 향상시키시기를 바랍니다.

참고 자료