자료구조 & 알고리즘/자료구조 & 알고리즘

[자료구조] Stack

오징어달료 2024. 9. 10. 00:17

자료구조


Stack 

Stack은 LIFO(Last In, First Out) 원칙을 따르는 자료구조

즉, 마지막에 삽입된 데이터가 가장 먼저 제거되는 방식으로, 후입선출 이라고 함

Java 에서는 Stack 클래스로 구현이 되어 있음.
java.util.Stack 클래스는 Vector 클래스를 상속받은 클래스로, 기본적인 스택 연산을 제공함.

package stack;

import java.util.Stack;

public class Stack01 {
    public static void main(String[] args) {
        Stack<Integer> stack = new Stack<>();

        stack.push(4);
        stack.push(3);
        stack.push(2);
        stack.push(1);

        System.out.println(" 스택 상태 : " + stack);

        // peek() 메소드로 맨 위 요소 확인
        System.out.println(" 맨 위 요소 : " + stack.peek());

        // pop() 메소드를 사용하여 맨 위 요소 제거 및 반환
        System.out.println(" 제거된 요소 : " + stack.pop());
        System.out.println(" 스택 상태 : " + stack);

        // 스택이 비었는지 확인
        System.out.println(" 스택 empty 체크 : " + stack.empty());

    }
}

활용

- 괄호 검사 : 소스 코드나 수식에서 괄호의 짝이 맞는지 확인하는데 사용

- 재귀 호출 처리 : 시스템의 재귀 호출은 내부적으로 스택을 사용하여 함수 호출 순서를 관리

- 역순 문자열 출력 : 문자열을 스택에 넣고 역순으로 출력할때 유용

- 탐색 알고리즘 : DFS(깊이 우선 탐색)알고리즘에서 스택이 사용됨

단점

- java.util.Stack 클래스는 스레드 안전한 구조로 설계되어 성능 면에서 다소 비효율적일 수 있음. 
또한, 상속 계층에서 Vector를 상속받아 스택 자료구조 외의 불필요한 기능도 포함하고 있음.


관련 문제

[프로그래머스] 같은 숫자는 싫어

https://forcetyty.tistory.com/59

 

[프로그래머스] 같은 숫자는 싫어

스택 / 큐난이도 : Lv.1문제 설명배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려

forcetyty.tistory.com