큐(Queue)

큐 (Queues)

큐에서는 스택과는 반대로, 어느 시점에서 큐에 들어 있는 데이터 원소를 꺼내면 큐에 들어 있는 원소들 중 가장 먼저 넣었던 것이 꺼내집니다. 따라서 큐를 선입선출 (FIFO; first-in first-out) 이라고도 부릅니다.

Enqueue 연산

Dequeue 연산

큐의 동작

img

연산의 정의

배열로 구현한 큐

# 배열로 구현한 큐
class ArrayQueue:
    # 빈 큐를 초기화
    def __init__(self):
        self.data = []
        
    # 큐의 크기를 리턴
    def size(self):
        return len(self.data)

    # 큐가 비어있는지 판단
    def isEmpty(self):
        return self.size() == 0
    
    # 데이터 원소 추가 연산
    def enqueue(self, item):
        self.data.append(item)
        
    # 데이터 원소 삭제 연산
    def dequeue(self):
        return self.data.pop(0)
    
    # 큐의 맨 앞 원소 반환
    def peek(self):
        return self.data[0]

배열로 구현한 큐의 연산 복잡도

연산 복잡도
size() $O(1)$
isEmpty() $O(1)$
enqueue(x) $O(1)$
dequeue() $\bold{O(n)}$
peek() $O(1)$