인기 식당 앞 대기 줄처럼, 먼저 도착한 사람이 먼저 들어가는 가장 공정한 통로예요.

정의 큐는 먼저 들어간 데이터가 가장 먼저 나오는 '선입선출(First In First Out, 줄여서 FIFO)' 원리로 작동하는 자료구조예요. 컴퓨터 세상에서 수많은 작업과 데이터를 순서대로 차례차례 처리할 때 사용하는 가장 기본적인 정리 방식이에요.

버스 정류장의 줄서기와 똑같아요

인기 있는 식당이나 버스 정류장에서 길게 늘어선 줄을 떠올려 보세요. 가장 먼저 도착해서 줄을 선 사람이 가장 먼저 버스에 타고, 늦게 온 사람은 맨 뒤에 서서 차례를 기다려요. 새치기가 없다면 먼저 온 사람이 먼저 나가는 순서는 절대로 바뀌지 않아요.

컴퓨터에서도 작업을 이런 순서대로 차례차례 줄 세워 처리하는 도구가 필요해요. 이것을 선입선출 규칙을 따르는 큐라고 불러요. 영어 단어 '큐(Queue)' 자체가 일상에서 줄이나 줄을 서서 기다리는 행위를 뜻해요.

큐에 새로운 데이터를 맨 뒤에 넣는 동작을 '인큐(Enqueue)'라고 해요. 반대로 맨 앞의 데이터를 꺼내 쓰는 동작은 '디큐(Dequeue)'라고 불러요. 양쪽이 뚫린 투명한 빨대 안으로 구슬을 넣고 반대쪽으로 빼내는 모습을 생각하면 구조를 쉽게 이해할 수 있어요.

큐(Queue) 자료구조와 선입선출 원리 출구 (Front) 입구 (Rear) 디큐 (Dequeue) 인큐 (Enqueue) 1 2 3 4 선입선출 (FIFO : 먼저 들어온 데이터가 먼저 나감)

컴퓨터는 큐를 어디에 쓸까요?

사무실에서 여러 사람이 하나의 프린터를 함께 쓸 때 큐가 큰 활약을 해요. 여러 사람이 동시에 인쇄 버튼을 누르면 프린터는 들어온 순서대로 요청을 메모리에 줄 세워요. 그리고 맨 먼저 들어온 1번 문서부터 순서대로 차근차근 인쇄를 진행해요.

인기 콘서트 예매나 대학교 수강신청 날에 마주치는 대기 화면도 큐를 활용한 기술이에요. 수만 명의 사용자가 한꺼번에 몰리면 서버가 과부하로 멈출 수 있어요. 이때 큐를 이용해 접속 번호표를 나눠주고 순서대로 들여보내 시스템을 안전하게 지켜내요.

스마트폰이나 키보드로 글자를 빠르게 입력할 때도 큐가 뒤에서 일해요. 기기가 다른 연산을 하느라 화면 표시가 1~2초 멈칫하더라도 입력한 글자는 사라지지 않아요. 키보드 입력 신호가 큐에 차례대로 담겨 있다가 멈춤이 풀리면 순서 그대로 화면에 나타나요.

조금 더 정확히 말하면: 스택과의 차이와 변형들

조금 더 정확히 말하면, 컴퓨터 과학에서 큐와 가장 자주 비교되는 짝꿍은 '스택(Stack)'이에요. 스택은 프링글스 과자 통처럼 맨 나중에 넣은 것을 가장 먼저 꺼내는 후입선출 방식이에요. 반면 큐는 양쪽이 뚫린 원통처럼 먼저 들어간 데이터가 먼저 나가는 방식이라는 점이 핵심 차이예요.

실제 프로그래밍 환경에서는 기본 큐의 단점을 보완한 다양한 변형 큐를 사용해요. 앞에서 데이터가 빠져나가면서 생기는 메모리 낭비 공간을 없애기 위해 양 끝을 도넛처럼 둥글게 연결한 '원형 큐'가 대표적인 예예요.

또한 비행기 탑승 때 교통약자나 우수 고객을 먼저 태우듯, 데이터의 중요도에 따라 처리 순서를 정하는 '우선순위 큐'도 널리 쓰여요. 이처럼 큐는 단순한 줄서기를 넘어 컴퓨터 운영체제와 네트워크 전반에서 없어서는 안 될 핵심 뼈대 역할을 맡고 있어요.

🤔 흔한 오해

✕ 오해

큐는 중간에 위치한 데이터를 언제든 마음대로 쏙 빼낼 수 있다.

✓ 사실

기본 큐에서는 오직 맨 앞(Front)에서만 데이터를 꺼낼 수 있고, 맨 뒤(Rear)로만 넣을 수 있어요. 중간 데이터를 꺼내려면 다른 자료구조를 쓰거나 별도의 규칙이 필요해요.

🧺 일상에서 만나요

1 프린터 인쇄 대기열에서 먼저 요청된 문서가 먼저 출력되는 상황이에요.
2 인기 콘서트 티켓팅 사이트에서 접속 대기 순서대로 예매 페이지로 입장하는 시스템이에요.
💡 그러니까 한마디로

큐는 먼저 들어온 데이터를 먼저 처리하는 '선입선출(FIFO)' 방식의 줄서기 자료구조예요.