줄을 서는 대기열, 큐(Queue)
큐(Queue)
는 줄을 서는 대기열과 같은 자료구조입니다.
먼저 줄을 선 사람이 가장 먼저 서비스를 받는 것처럼, 큐에서는 먼저 들어온 데이터가 먼저 처리됩니다.
이러한 구조로 인해 큐는 FIFO(First In, First Out)
, "먼저 들어온 것이 먼저 나간다"라는 원칙을 따르는 자료구조입니다.
큐는 어떻게 활용되나요?
-
프린터 작업 대기열: 프린터는 먼저 들어온 인쇄 작업을 먼저 처리합니다.
-
콜센터 대기열: 고객이 전화를 걸면 대기열에 추가되고, 상담원이 자유로워지면 먼저 대기 중인 고객부터 상담을 시작합니다.
큐의 주요 연산
큐에서 자주 사용하는 연산은 다음과 같습니다.
-
enqueue: 큐의 끝에 새로운 데이터를
추가
하는 연산입니다. -
dequeue: 큐의 앞에서 데이터를
제거 및 반환
하는 연산입니다. -
peek: 큐의 앞에 있는 데이터를 제거하지 않고
확인
하는 연산입니다. -
is_empty: 큐가
비어 있는지
를 확인하는 연산입니다.
파이썬에서의 큐 구현
리스트의 append()
메서드를 사용해 데이터를 추가하고, pop(0)
메서드를 사용해 데이터를 제거하면 큐의 기본적인 기능을 구현할 수 있습니다.
파이썬에서의 큐 구현 예제
class Queue: # 큐 초기화 def __init__(self): self.queue = [] # 큐에 데이터 추가 def enqueue(self, item): self.queue.append(item) print(f"Enqueue: {item}가 큐에 추가되었습니다.") # 큐에서 데이터 제거 def dequeue(self): if not self.is_empty(): item = self.queue.pop(0) print(f"Dequeue: {item}가 큐에서 제거되었습니다.") return item else: print("Dequeue: 큐가 비어 있습니다.") return None # 큐의 가장 앞에 있는 데이터 확인 def peek(self): if not self.is_empty(): return self.queue[0] else: print("Peek: 큐가 비어 있습니다.") return None # 큐가 비어 있는지 확인 def is_empty(self): return len(self.queue) == 0 # 큐 사용 예시 my_queue = Queue() my_queue.enqueue(1) # Enqueue: 1이 큐에 추가 my_queue.enqueue(2) # Enqueue: 2가 큐에 추가 print(f"Peek: 현재 큐의 가장 앞에 있는 값은 {my_queue.peek()}입니다.") my_queue.dequeue() # Dequeue: 1이 큐에서 제거 my_queue.dequeue() # Dequeue: 2가 큐에서 제거 my_queue.dequeue() # 큐가 비어 있어 제거할 수 없음
정리하면?
-
큐는
FIFO(First In, First Out)
구조를 따르는 자료구조입니다. -
주요 연산으로는 enqueue(추가), dequeue(제거), peek(데이터 확인), is_empty(비어 있는지 확인)이 있습니다.
Mission
0 / 1
큐는 먼저 들어온 데이터가 먼저 처리되는 자료구조입니다.
O
X
가이드라인
AI 튜터
배포
디자인
업로드
수업 노트
즐겨찾기
도움말
코드 에디터
코드 실행
코드 생성
실행 결과