Python

큐(Queue)란?

winter126 2025. 2. 28. 02:03

큐(queue)는 컴퓨터의 기본적인 자료구조 중 하나로, 먼저 들어온 데이터가 먼저 나가는 구조(FIFO, First In First Out)를 가진다.

쉽게 말해, 줄을 서서 기다리는 것과 같은 개념이다.

데이터를 넣는 작업을 put, 데이터를 꺼내는 작업을 get이라고 한다.

파이썬에서는 insert(0, 값)pop(0)을 사용하여 큐를 구현할 수 있고, 자바스크립트에서는 unshift()shift()를 활용할 수 있다.

 

https://ko.wikipedia.org/wiki/큐_(자료_구조)

 

큐의 동작 원리

  1. 새로운 데이터는 항상 rear(뒤쪽 끝)에서 추가된다.
  2. 데이터를 꺼낼 때는 front(앞쪽 끝)에서 제거된다.
  3. 가장 먼저 들어온 데이터가 가장 먼저 제거된다.
  4. 큐가 가득 차면 Overflow, 비어 있으면 Underflow 상태가 된다.

 

큐의 용어

  • put: 큐에 데이터를 추가하는 작업
  • get: 큐에서 데이터를 꺼내는 작업
  • front: 데이터를 꺼낼 수 있는 위치
  • rear: 데이터를 추가할 수 있는 위치
  • Overflow: 큐가 꽉 차서 데이터를 추가할 수 없는 상태
  • Underflow: 큐가 비어 있어 데이터를 꺼낼 수 없는 상태

 

큐의 종류

1. 선형 큐 (Linear Queue)

  • 막대 모양으로 데이터를 저장하는 구조
  • 크기가 제한되어 있으며, 빈 공간을 활용하려면 모든 데이터를 꺼내거나 한 칸씩 이동해야 하는 단점이 있음
  • 데이터 흐름: A → B → C → D

2. 환형 큐 (Circular Queue)

  • 선형 큐의 단점을 보완한 구조
  • 배열을 사용하여 큐를 선언할 때, 삭제와 추가가 반복되면 front가 배열의 끝에 도달할 수 있는데, 이때 큐의 처음으로 이동하여 원형으로 연결하는 방식
  • 데이터 흐름: A → B → C → D → E (순환 구조)

 

큐의 구현

Python 큐 구현 예제

from collections import deque

class Queue:
    def __init__(self):
        self.queue = deque()
    
    def put(self, x):
        self.queue.append(x)
    
    def get(self):
        if not self.is_empty():
            return self.queue.popleft()
        return "Queue is empty"
    
    def front(self):
        if not self.is_empty():
            return self.queue[0]
        return "Queue is empty"
    
    def is_empty(self):
        return len(self.queue) == 0

# 큐 사용 예제
q = Queue()
q.put(1)
q.put(2)
q.put(3)
print(q.front())  # 1
print(q.get())  # 1
print(q.is_empty())  # False

 

JavaScript 큐 구현 예제

class Queue {
    constructor() {
        this.queue = [];
    }
    
    put(x) {
        this.queue.push(x);
    }
    
    get() {
        return this.queue.length ? this.queue.shift() : "Queue is empty";
    }
    
    front() {
        return this.queue.length ? this.queue[0] : "Queue is empty";
    }
    
    is_empty() {
        return this.queue.length === 0;
    }
}

// 큐 사용 예제
const q = new Queue();
q.put(1);
q.put(2);
q.put(3);
console.log(q.front());  // 1
console.log(q.get());  // 1
console.log(q.is_empty());  // false

 

큐의 활용

큐는 데이터가 입력된 순서대로 처리되어야 하는 다양한 상황에서 활용된다. 대표적인 예시는 다음과 같다.

  • 프린터의 출력 처리: 먼저 요청된 문서가 먼저 출력됨
  • 운영체제의 프로세스 관리: 먼저 요청된 작업이 먼저 실행됨
  • 네트워크 패킷 처리: 전송 순서대로 데이터가 처리됨
  • 윈도우 시스템의 이벤트 처리: 사용자의 입력(클릭, 키보드 입력 등)이 발생한 순서대로 처리됨

큐는 단순한 구조이지만 많은 곳에서 활용되는 중요한 자료구조다.

 


 

 

 

눈떠보니 코딩테스트 전날 강의 | 제주코딩베이스캠프 - 인프런

제주코딩베이스캠프 | , [사진]       [사진][사진][사진] 혹시 다들 이런 경험 없으신가요?눈떠보니 바로 다음날이 코딩 테스트 .. !! 😱  그래서 제주코딩베이스캠프가 준비했습니다! 기본적으

www.inflearn.com