[java] 스택의 특정 값 찾기

자료구조 중 하나인 스택(Stack)은 후입선출(LIFO, Last-In-First-Out) 원칙에 따라 동작하는 데이터 구조입니다. 스택은 데이터를 삽입(push)하고 제거(pop)할 수 있는 특징을 가지고 있습니다. 이번 글에서는 Java에서 스택을 활용하여 특정 값을 찾는 방법에 대해 알아보겠습니다.

스택 클래스 만들기

public class Stack {
    private int maxSize;
    private int[] stackArray;
    private int top;

    public Stack(int size) {
        maxSize = size;
        stackArray = new int[maxSize];
        top = -1;
    }

    public void push(int value) {
        stackArray[++top] = value;
    }

    public int pop() {
        return stackArray[top--];
    }

    public int peek() {
        return stackArray[top];
    }

    public boolean isEmpty() {
        return (top == -1);
    }

    public boolean isFull() {
        return (top == maxSize - 1);
    }
}

스택에서 특정 값 찾기

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);

        int target = 30;
        boolean found = false;

        while (!stack.isEmpty()) {
            int value = stack.pop();
            if (value == target) {
                found = true;
                break;
            }
        }

        if (found) {
            System.out.println("찾는 값이 스택에 존재합니다.");
        } else {
            System.out.println("찾는 값이 스택에 존재하지 않습니다.");
        }
    }
}

위의 코드는 스택 클래스를 구현하고, 스택에서 특정 값(target)을 찾는 예시입니다. 스택 객체를 생성한 후 push() 메서드를 사용하여 원하는 값들을 스택에 삽입합니다. 그리고 pop() 메서드를 사용하여 스택의 값을 하나씩 확인하면서 찾고자 하는 값과 일치하는지 검사합니다. 만약 일치하는 값이 발견되면 found 변수를 true로 설정하고 반복문을 종료합니다.

결과적으로 스택에 찾는 값이 존재하는지 여부를 출력하는 예시입니다. 해당 값이 스택에 존재할 경우 “찾는 값이 스택에 존재합니다.”라는 메시지가 출력되고, 존재하지 않을 경우 “찾는 값이 스택에 존재하지 않습니다.”라는 메시지가 출력됩니다.

결론

Java에서 스택을 사용하여 특정 값을 찾는 방법을 알아보았습니다. 스택은 여러 가지 상황에서 유용하게 사용될 수 있는 자료구조입니다. 스택을 활용하여 데이터를 삽입, 제거 및 탐색하는 작업을 수행할 수 있습니다. 이를 통해 프로그램의 효율성을 높일 수 있습니다.

참고 문서: