Skip to content

Latest commit

 

History

History
34 lines (27 loc) · 1.93 KB

File metadata and controls

34 lines (27 loc) · 1.93 KB

Stack

후입선출(LIFO, Last-In-First-Out) 원칙을 따르는 자료 구조

동작 방식

  • 스택에 가장 최근에 추가된 요소는 스택의 상단에 위치(Last-In)
  • 스택에서 데이터가 제거될 때, 가장 상단의 요소가 먼저 제거 됨(First-Out)

동작

  • push: 최상단에 요소 추가
  • pop: 최상단에 요소 제거
  • peek: 최상단의 요소 반환하지만 수정하지는 않음
  • isEmpty: 스택이 비어 있는지 알려줌

리스트에 비해 적은 기능인데, 왜 사용할까?

  • 메서드를 적게 유지하면 코드의 가독성이 높아지고 오류의 가능성이 줄어들음
    예를 들어 리스트를 사용하여 스택을 표현하면 잘못된 순서로 요소를 제거할 가능성이 생김
    (오류를 피하는 가장 좋은 방법은 오류가 발생하지 않게 하는 것)

자바에서 스택을 사용하는 방법

표준 구현된 StackVector를 이용해서 사용할 수 있지만, Vector는 멀티스레드 환경에서 유리한 동기화된 메서드로 구성되어 있다.
하지만 최근 자바 버전에서는 ArrayList와 같은 비동기화된 클래스를 선호하여 맞지 않는다.

  • LinkedList 또는 ArrayList를 통해 사용하는 방법
    요소의 끝에 넣고 제거해야 한다. 잘못된 위치에 추가하거나 제거하지 않도록 주의
  • ArrayDeque 클래스 같은 Deque 인터페이스를 구현한 클래스 사용하는 방법 이 방법이 가장 좋다.(Deque: 양쪽에 끝이 있는 큐)

활용 방법

  • 스택을 사용한다면, DFS를 재귀를 사용하지 않고 반복하여 수행할 수 있다.

예제 코드

예제 코드 링크

참조

[자료구조 알고리즘] Stack 구현하기 in Java - 엔지니어 대한민국