큐(Quene)란 무엇인가?
큐란 가장 먼저 넣은 데이터를 가장 먼저 꺼내는 구조를 말한다. 이를 선입선출(FIFO)라 한다.
큐에 데이터를 넣는 기능을 Enqueue라 하고 큐에서 데이터를 꺼내는 기능을 Dequene라 한다.
큐는 주로 프로세스 스케쥴링 방식을 구현하기 위해 사용된다.
큐의 기본적인 구조는 다음과 같다.
우선순위 큐(Priority Queue)
우선순위 큐는 기존의 큐와는 다르게 값을 식별하고 검색하는데 사용하는 키(key) 와 실제 데이터를 의미하는 값(value)으로 큐의 요소들을 정렬한다. 이러한 요소들은 우선순위가 있으며 들어온 순서대로 삭제되는 것이 아니라 우선순위에 따라 큐에서 먼저 삭제된다. 우선순위 큐는 데이터 압축, 네트워킹등의 분야에서 사용된다.
Python 에서의 큐
파이썬에서는 Queue 라이브러리를 활용하여 세 가지의 큐 자료구조를 사용할 수 있다.
Queue(): 일반적인 큐
LifoQueue(): 나중에 입력된 데이터가 먼저 출력되는 구조 (스택과 유사하다)
PriorityQueue(): 우선순위 큐
Queue()
import queue
data_queue = queue.Queue()
data_queue.put("짜장면")
data_queue.put("1")
print(data_queue.qsize()) # 2 가 출력 됨
data_queue.get()
print(data_queue.qsize()) # 1 이 출력 됨
data_queue.get()
print(data_queue.qsize()) # 0 이 출력 됨
.Queue() 는 일반적인 Queue를 사용하게 한다.
.put 은 데이터를 삽입한다.
.qsize 는 현재 Queue에 들어있는 데이터의 갯수를 나타낸다.
.get 은 맨 앞의 데이터를 꺼낸다.(삭제)
LifoQueue() (후입선출)
import queue
data_queue = queue.LifoQueue()
data_queue.put("짜장면")
data_queue.put("짬뽕")
data_queue.get() # 늦게 들어온 짬뽕이 삭제 됨
print(data_queue.qsize()) # 1 출력
PriorityQueue()
import queue
data_queue = queue.PriorityQueue()
data_queue.put((5, "볶음밥"))
data_queue.put((15, "기스면"))
data_queue.put((2, "탕수육"))
print(data_queue.qsize())
data_queue.get() # 우선순위(2)에 따라 탕수육이 삭제 됨
data_queue.get() # 우선순위(5)에 따라 볶음밥이 삭제 됨
print(data_queue.qsize()) # 1 출력
'자료구조 & 알고리즘' 카테고리의 다른 글
Tool Box 3 (0) | 2023.05.24 |
---|---|
Tool Box 2 (0) | 2023.05.16 |
Tool Box (0) | 2023.04.26 |
자료구조 : 배열(Array) (0) | 2021.12.21 |
컴퓨터 메모리의 간략한 개념과 선형 데이터 구조의 개념 (0) | 2021.12.21 |