1. 큐 구조
- 줄을 서는 행위와 유사
- 가장 먼저 넣은 데이터를 가장 먼저 꺼낼 수 있는 구조
- 음식점에서 가장 먼저 줄을 선 사람이 제일 먼저 음식점에 입장하는것과 동일.
- FIFO 또는 LILO 방식으로 스택과 꺼내는 순서가 반대
2. 알아둘 용어
- Enqueue : 큐에 데이터를 넣는 기능
- Dequeue : 큐에서 데이터를 꺼내는 기능
3. 파이썬 queue 라이브러리 활용해서 큐 자료 구조 사용하기
- queue 라이브러리는 다양한 큐 구조로 Queue(),LifoQueue(), PriorityQueue() 제공
- 프로그램을 작성할 때 프로그램에 따라 적합한 자료 구조를 사용
- Queue() : 가장 일반적인 큐 자료 궂
- LifoQueue : 나중에 입력된 데이터가 먼저 출력되는 구조 (스택 구조라고 보면 됨)
- PriorityQueue() : 데이터마다 우선순위를 넣어서, 우선순위가 높은 순으로 데이터 출력
3-1. Queue()
로 큐 만들기(가장 일반적인 큐,FIFO(First-In, First-Out)) - 선입선출
import queue data_queue = queue.Queue() # 데이터 집어넣기(.put) data_queue.put("funcoding") data_queue.put(1) # 큐의 사이즈 출력 data_queue.qsize() # 가장 먼저 입력된 데이터 출력 data_queue.get()
3-2. LifoQueue()
로 큐 만들기 (LIFO(Last-In, First-Out)) - 후입선출
import queue data_queue = queue.LifoQueue() data_queue.put("funcoding") data_queue.put(1) 2 data_queue.qsize() 'funcoding'
3-3. PriorityQueue()로 큐 만들기
import queue data_queue = queue.PriorityQueue() # 우선순위 매기기 (앞이 우선순위 지정) data_queue.put((10, "korea")) data_queue.put((5, 1)) data_queue.put((15, "china")) data_queue.qsize() 3 data_queue.get() (5, 1) data_queue.get() (10, 'korea')
어디에서 큐가 많이 쓰일까?
- 멀티 태스킹을 위한 프로세스 스케쥴링 방식을 구현하기 위해 많이 사용됨(운영체제 참조)
큐의 경우에는 장단점 보다는(특별히 언급되는 장단점이 없음), 큐으ㅟ 활용 예로 프로세스 스케쥴링 방식을 함께 이해해두는 것이 좋음
4. 프로그래밍 연습
연습1: 리스트 변수로 큐를 다루는 enqueue, dequeue 기능 구현해보기(함수사용X)
queue_list = list() def enqueue(data): queue_list.append(data) def dequeue(): data = queue_list[0] del queue_list[0] return data
요약
큐 구조는 줄을 서는 행위와 유사하며, 가장 먼저 넣은 데이터를 가장 먼저 꺼낼 수 있는 구조입니다. 음식점에서 가장 먼저 줄을 선 사람이 제일 먼저 음식점에 입장하는것과 동일하며, FIFO 또는 LILO 방식으로 스택과 꺼내는 순서가 반대입니다.
Uploaded by
N2T반응형