← 질문 목록
#231깊이 0
스택과 큐는 어떤 상황에서 구분해 쓰는가?
자료구조 · 알고리즘기초
데이터의 처리 순서가 최신순인지 선입선출순인지에 따라 결정한다. 가장 나중에 들어온 데이터를 먼저 처리해야 하면 스택을, 먼저 들어온 순서대로 처리해야 하면 큐를 쓴다.
| 기준 | 스택 (Stack) | 큐 (Queue) |
|---|---|---|
| 처리 순서 | LIFO (후입선출) | FIFO (선입선출) |
| 주요 연산 | push / pop | enqueue / dequeue |
| 사용 사례 | 되돌리기, 재귀 호출 | 대기열, 프로세스 스케줄링 |
스택은 데이터의 '맥락'을 유지하는 데 유리하다. 함수 호출 스택처럼 현재 작업을 멈추고 새로운 작업을 수행한 뒤, 다시 이전 상태로 돌아와야 할 때 적합하다.
큐는 데이터의 '흐름'을 제어하는 데 유리하다. 요청이 몰릴 때 이를 순차적으로 처리하여 시스템의 부하를 조절하는 버퍼 역할로 주로 쓰인다.
두 구조 모두 삽입과 삭제가 O(1)의 시간 복잡도를 가진다. 하지만 큐를 배열로 구현할 때 삭제 연산 시 데이터 시프팅이 발생하므로, 원형 큐나 연결 리스트로 구현하면 요소를 옮기는 비용이 사라진다.