큐(Queue)

·2025년 2월 27일

algorithm

목록 보기
2/9
post-thumbnail

1. Queue

FIFO (First In First Out) 구조를 가지는 자료구조로,
즉, 먼저 들어온 데이터가 먼저 나가는 구조를 의미

2. 큐의 활용 예시

<순서대로 처리해야 하는 상황>

1) 프린터 대기열 🖨️ (먼저 요청한 문서부터 인쇄)
2) 은행 대기줄 🏦 (먼저 온 사람이 먼저 처리됨)
3) 운영체제의 작업 스케줄링 💻 (CPU 작업 처리)
4) 네트워크 패킷 처리 📶 (패킷이 들어온 순서대로 처리)

3. 큐의 주요 연산

파이썬에서는 리스트나 deque(덱) 로 큐를 구현 가능
(⚠️ 리스트로 pop(0)을 쓰면 비효율적이므로 deque를 추천한다고 한다)

from collections import deque

class Queue:
    def __init__(self):
        self.queue = deque()

    def enqueue(self, item):
        self.queue.append(item)

    def dequeue(self):
        if not self.isEmpty():
            return self.queue.popleft()  # 덱의 popleft()를 사용하면 더 빠름!
        else:
            return "Queue is empty"

    def front(self):
        if not self.isEmpty():
            return self.queue[0]
        else:
            return "Queue is empty"

    def isEmpty(self):
        return len(self.queue) == 0

    def size(self):
        return len(self.queue)

연산 설명
enqueue(x): 큐의 뒤쪽(Rear)에 요소 추가
dequeue(): 큐의 앞쪽(Front)에서 요소 제거
front(): 큐의 앞쪽(Front) 요소 반환 (제거 X)
isEmpty(): 큐가 비었는지 확인
size(): 큐의 요소 개수 반환

4. 큐 연습 문제 (백준)

10845 - 큐
1966 - 프린터 큐
5430 - AC
1158 - 요세푸스 문제
1021 - 회전하는 큐

profile
develog

0개의 댓글