프로그래밍의 기초 자료구조인 스택(Stack)과 큐(Queue)의 동작 원리를 정리했다.
데이터 입출력 규칙을 통해 다양한 문제를 해결할 수 있다.
LIFO vs FIFO 구조 분석
스택과 큐는 데이터 처리 순서에 따라 구분된다.
// 1. Stack (LIFO: Last-In First-Out)
// 후입선출 구조. 마지막에 삽입된 데이터가 먼저 추출됨.
stack.push(1); stack.push(2);
System.out.println(stack.pop()); // 2 출력
// 2. Queue (FIFO: First-In First-Out)
// 선입선출 구조. 먼저 삽입된 데이터가 먼저 추출됨.
queue.add(1); queue.add(2);
System.out.println(queue.poll()); // 1 출력
자료구조 활용 사례
-
스택: 역순 처리가 필요한 기능에 활용된다.
브라우저 ‘뒤로 가기’, 에디터 ‘실행 취소(Undo)’, 함수 호출 스택 등이 대표적이다. -
큐: 순차적 처리가 필요한 시스템에 활용된다.
프린터 대기열, 프로세스 스케줄링, 서버 요청 처리 등에 사용된다.
설계적 고찰
큐 구현 시 발생하는 공간 낭비를 해결하기 위한 ‘원형 큐(Circular Queue)’ 방식 등을 통해 시스템 효율성을 높일 수 있다.
문제 상황에 적합한 자료구조를 선택하는 것은 개발자의 기본 역량이다.
효율적인 설계를 위해 각 구조의 특성을 명확히 이해해야 하는 것 같다.