
Queue (큐)
Queue 란?
큐는 먼저 입력된 데이터를 가장 먼저 꺼낼 수 있는 자료구조입니다. 이러한 동작 원리는 선입선출(FIFO, First In First Out)이라고 합니다.
이때 큐에 데이터를 삽입하는 연산을 인큐(enqueue), 꺼내는 연산을 디큐(dequeue)라고 합니다.
Queue의 동작 원리

초기에 빈 큐가 있습니다
여기에 데이터 1을 enqueue하면 현재 큐는 [1]이 됩니다
데이터 2를 enqueue하면 현재 큐는 [1, 2]가 됩니다
마지막으로 dequeue를 하면 처음으로 enqueue한 데이터 1이 빠져나가고 큐는 [1]이 됩니다.
Queue의 ADT
큐에는 enqueue, dequeue, isFull(가득 찼는지), isEmpty(비었는지) 같은 연산을 정의해야 합니다. 그리고 큐는 데이터가 삽입되는 뒷쪽 위치를 저장하는 rear와 데이터가 추출되는 앞쪽 위치를 저장하는 front도 있어야 합니다.
boolean isFull() : 큐가 가득 차 있는지 확인하고 boolean값을 반환
boolean isEmpty() : 큐에 데이터가 없는지 확인하고 boolean값을 반환
void enqueue(ItemType item) : 큐에 데이터를 추가
ItemType dequeue() : 큐에서 데이터를 꺼내고, 그 데이터를 반환
int front : 큐의 첫 데이터 위치
int rear : 큐의 마지막 데이터 위치
ItemType data[maxsize] : 큐의 데이터를 관리하는 배열 / 최대 maxsize개의 데이터를 관리
Queue 구현
위에 정의한 큐를 구현하면 다음과 같습니다. (Python)
queue = [] # 큐 리스트 초기화
max_size = 10 # 큐의 최대 크기
def isFull(queue):
# 큐가 가득 찼는지 확인하는 함수
return len(queue) == max_size
def isEmpty(queue):
# 큐가 비어 있는지 확인하는 함수
return len(queue) == 0
def enqueue(queue, item):
# 큐에 데이터를 추가하는 함수
if isFull(queue):
print("큐가 가득 찼습니다.")
else:
queue.append(item)
print("데이터가 추가되었습니다.")
def dequeue(queue):
# 큐에서 데이터를 꺼내는 함수
if isEmpty(queue):
print("큐가 비어 있습니다.")
return None
else:
return queue.pop(0)
마무리
최근 회사에서 일이 너무 바쁘다는 핑계로... 몇일동안 알고리즘을 못했는데.. 최소한 하루에 한문제는 꼭 풀도록 노력해야겠다..!
![[til] 프로그래머스 신규아이디 추천](https://cdn.hashnode.com/res/hashnode/image/upload/v1745249371004/97aa7a0b-1b1b-4f81-a5ef-790b9b682f08.png)
![[til] 알고리즘 백준 리그 오브 레전설](https://cdn.hashnode.com/res/hashnode/image/upload/v1745007840153/c6cf7c45-0d8f-4bee-ae9a-55cc454f3c92.png)
![[til] 알고리즘 백준 진우의 달 여행 (Small)](https://cdn.hashnode.com/res/hashnode/image/upload/v1744914681507/e80e8747-d4ff-4fd4-b595-33024a238ee1.png)
![[til] 알고리즘 JadenCase 문자열 만들기](https://cdn.hashnode.com/res/hashnode/image/upload/v1744823424388/57f5c5c1-7e85-4071-88e8-1ec09ed64828.png)
![[til] 알고리즘 백준 포도주 시식](https://cdn.hashnode.com/res/hashnode/image/upload/v1744724798661/286b75a2-50e0-481e-8e3f-2a6cb500d678.png)