스택 (Stack) vs 큐 (Queue) 차이

1. 스택(Stack) 이란? 개념과 특징 정리

  • 스택(Stack)은 가장 나중에 들어간 데이터가 가장 먼저 나오는 구조로, LIFO(Last In, First Out) 방식입니다.
    (대학이나 이론 설명에서 접시 설거지에 비유해서 설명을 많이 하는데 가장 마지막에 올린 접시를 가장 먼저 닦을 수 밖에 없는 구조이기 때문에 그렇다)
  • 연산의 경우 push (입력), pop (출력), peek (다음 출력으로 나오게 될 값) 을 많이 사용한다 .

stack = []

stack.append(1)
stack.append(2)
stack.append(3)
stack.append(4)

print(f"출력된 값 : {stack.pop()}")

2. 큐(Queue) 란? 개념과 특징 정리

  • 큐(Queue) 는 입력으로 들어가는 데이터는 뒷부분에 출력에 대한 데이터는 앞부분에 진행하는 FIFO(First in First out) 방식이다.
    (대학이나 이론 설명에서는 버스정류장 줄 서기 같은 예시를 많이 든다 -> 처음 줄 선 사람이 처음으로 탑승하므로)
  • 연산의 경우 put(입력) get (출력) empty (비었는지) 등을 사용한다.
from queue import Queue

# 큐 생성
queue = Queue()

queue.put(1)
queue.put(2)
queue.put(3)
queue.put(4)

print(f"출력된 값 : {queue.get()}") 

3. 스택(Stack) , 큐(Queue) 비교

  • 스택은 한쪽에서 입출력이 발생하지만 큐는 입력은 뒤 출력은 앞으로 서로 다른 방향에서 발생한다.

스택(Stack) 이 유리한 경우

  • 뒤로가기 기능 (이전 데이터를 다시 불러오면 되므로)
  • DFS 알고리즘 (깊이 우선 탐색)

큐(Queue) 유리한 경우

  • 실시간 데이터 처리
  • BFS 알고리즘 (넓이 우선 탐색)

기술 면접 예시

  • 스택과 큐의 차이를 설명해보세요.
  • DFS는 어떤 자료구조로 구현하나요?
  • BFS에서 큐를 사용하는 이유는?

요약


  • 스택(Stack) 은 마지막에 넣은 데이터를 먼저 꺼내는 구조 (LIFO)
  • 큐(Queue) 는 먼저 넣은 데이터를 먼저 꺼내는 구조 (FIFO)
  • 스택은 재귀, 되돌리기, 큐는 순차 처리, 스케줄링에 유리