bestwish
Hong's Tistory
bestwish
전체 방문자
오늘
어제
  • 분류 전체보기 (32)
    • DevOps (21)
      • Django (15)
      • TIL (2)
      • Python (2)
      • Git (0)
      • Docker (1)
      • Infra (1)
    • Algorithm (3)
      • 백준문제 (3)
      • 이론 (0)
    • CS (6)
      • Data Structure (6)

인기 글

최근 글

hELLO · Designed By 정상우.
bestwish

Hong's Tistory

큐 (Queues)
CS/Data Structure

큐 (Queues)

2022. 9. 11. 00:36

큐란?

자료를 보관할 수 있는 선형구조로, 넣을 떄에는 한 쪽 끝에서 밀어 넣어야(enqueue 인큐연산)하고, 꺼낼 떄에는 반대 쪽에서 뽑아 꺼내야(dequeue 디큐연산)하는 제약이 있다.

이처럼 먼저 넣은 것이 가장 먼저 꺼내어지는 성질 때문에 큐를 다른 말로는 선입선출(FIFO, first-in first-out) 자료 구조라고도 한다.

 

 

큐의 활용

  • 자료를 생성하는 작업과 그 자료를 이용하는 작업이 비동기적으로 일어나는 경우
  • 자료를 생성하는 작업이 여러 곳에서 일어나는 경우
  • 자료를 이용하는 작업이 여러 곳에서 일어나는 경우
  • 자료를 생성하는 작업과 그 자료를 이용하는 작업이 양쪽 다 여러 곳에서 일어나는 경우
  • 자료를 처리하여 새로운 자료를 생성하고, 나중에 그 자료를 또 처리해야 하는 작업의 경우

 

큐가 지원하는 연산 목록

  • size() - 현재 큐에 들어 있는 데이터 원소의 수를 구한다.
  • isEmpty() - 현재 큐가 비어 있는지를 판단한다.
  • enqueue(x) - 데이터 원소 x를 큐에 추가한다.
  • dequeue() - 큐의 맨 앞에 저장된 데이터 원소를 제거하면서 반환한다.
  • peek() - 큐의 맨 앞에 저장된 데이터 원소를 반환한다.

 

배열을 이용한 큐 파이썬 구현

class ArrayQueue:
	def __init__(self):
    	self.data = []
    
    def size(self):
    	retrun 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]
    

Q = ArrayQueue()
Q.enqueue(5)
Q.enqueue(8)
print(Q.data) # [5, 8]

print(Q.dequeue()) # 5
print(Q.dequeue()) # 8

 

큐 라이브러리

# pythonds 라이브러리를 설치
from pythonds.basic.queue import Queue
Q = Queue()
dir(Q)

# ['__doc__', '__init__', '__module__', 'isEmpty', 'items', 'peek', 'pop', 'push', 'size']

 

'CS > Data Structure' 카테고리의 다른 글

환형 큐(Circular Queues)  (0) 2022.09.18
스택 (Stacks)  (0) 2022.08.31
양방향 연결 리스트(Doubly Linked Lists)  (0) 2022.08.30
연결 리스트 (Linked Lists)  (0) 2022.08.21
선형 배열(Linear Array)  (0) 2022.08.11
    'CS/Data Structure' 카테고리의 다른 글
    • 환형 큐(Circular Queues)
    • 스택 (Stacks)
    • 양방향 연결 리스트(Doubly Linked Lists)
    • 연결 리스트 (Linked Lists)
    bestwish
    bestwish

    티스토리툴바