스택·큐 ADT

스택·큐 ADT 핵심

스택은 마지막에 넣은 값을 먼저 꺼내고, 큐는 먼저 넣은 값을 먼저 꺼낸다. 이 순서 제약이 괄호 검사, BFS, 시뮬레이션의 상태를 만든다.

01

꺼내는 순서 결정

최근 상태로 되돌아가야 하면 stack, 도착 순서대로 처리해야 하면 queue가 맞다.

02

비어 있음 검사를 둔다

pop이나 top/front 전에 empty를 확인하지 않으면 런타임 오류로 이어진다.

03

상태 의미를 붙인다

stack의 원소가 열린 괄호인지, 방문할 정점인지, 이전 계산 상태인지 이름으로 드러낸다.

Stack
되돌아가기 괄호, DFS, undo, 단조 스택 문제에 쓰인다.
top이 현재 비교 기준이다.
Queue
넓이 우선 처리 BFS 거리, 작업 대기열, 시뮬레이션에 맞다.
push 시점 방문 표시가 중요하다.
Deque
양방향 처리 슬라이딩 윈도우 최솟값, 0-1 BFS에 사용된다.
front/back 의미를 고정한다.
Priority queue
우선순위 순서 들어온 순서가 아니라 가장 큰/작은 기준으로 꺼낸다.
일반 queue와 다르다.

empty · 방문 표시 · 순서 점검

empty top, front, pop 전에 비어 있지 않음을 보장하는가.
방문 표시 BFS에서 push할 때 방문 표시를 해 중복 삽입을 막는가.
순서 문제가 요구하는 처리 순서가 LIFO인지 FIFO인지 설명할 수 있는가.

괄호 스택

for (char c : s) {
    if (c == '(') st.push(c);
    else if (st.empty()) return false;
    else st.pop();
        overflow-wrap: break-word;
        word-break: keep-all;
      }
return st.empty();