DATA STRUCTURE
큐 (Queue)
enqueue와 dequeue, 두 가지 연산만으로 먼저 넣은 값을 가장 먼저 꺼내는 FIFO(First In, First Out) 구조를 확인하세요. 대기열 처리, 프린터 작업열, BFS가 왜 큐를 쓰는지 같은 실제 시나리오를 단계별로 재생하거나, 직접 값을 넣고 빼며 규칙을 몸으로 익힐 수 있습니다.
재생 버튼을 누르거나 다음 단계 버튼으로 큐 연산을 시작하세요.
enqueue 0회 · dequeue 0회
1 / 1
PSEUDOCODE
enqueue(value): array.append(value) // REAR에 추가dequeue(): if array가 비어있음: return 오류 (언더플로우) value ← array.removeFirst() // FRONT에서 제거 return value
어떻게 동작하나요
큐는 먼저 넣은 데이터가 가장 먼저 나오는 FIFO(First In, First Out) 구조입니다. enqueue는 REAR(뒤쪽)에 값을 하나 추가하고, dequeue는 FRONT(앞쪽) 값 하나만 꺼내 제거합니다. 들어온 순서를 그대로 지킨다는 특징 덕분에 "먼저 온 사람을 먼저 처리한다"는 문제 — 대기열, 프린터 작업열, 너비 우선 탐색(BFS) — 를 자연스럽게 표현합니다. 큐가 비어 있을 때 dequeue를 시도하면 꺼낼 값이 없는 "언더플로우" 상태가 됩니다.
시간·공간 복잡도
- enqueue
- O(1)
- dequeue
- O(1)
- peek (FRONT 조회)
- O(1)
- 임의 위치 접근
- 불가 (전부 dequeue 필요)
- 공간 복잡도
- O(n)
FRONT/REAR 양쪽 끝에서만 값을 다루기 때문에(구현에 따라 dequeue가 배열 전체를 앞으로 당길 수도 있지만, 원형 큐나 연결 리스트로 구현하면) enqueue/dequeue 모두 O(1)입니다 — 스택과 달리 넣는 곳과 빼는 곳이 서로 반대쪽이라는 점이 핵심 차이입니다.
다른 자료구조(연결 리스트·해시 테이블·힙·이진 탐색 트리)도 이어서 시각화할 예정입니다 — Algorithm 코스로 돌아가기