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)
스택은 재귀, 되돌리기, 큐는 순차 처리, 스케줄링에 유리