2022. 9. 21. 22:13ㆍ자료구조 및 알고리즘
운영체제, 인터넷 네트워킹에서 많이
쓰이기 때문에 잘 알고 있어야 하는
자료구조 중 하나이다.
구조(정책), 필수 용어에 대해 잘 알아둘
필요가 있으며 관련 lib.를 활용하지 않고
큐의 정책을 이해하여 순수 코딩으로
조건문/반복문/함수를 활용하여 큐를
구현해 볼 수 있도록 연습하는 것을 권장한다.
큐 구조
가장 먼저 넣은 데이터를 가장 먼저
꺼낼 수 있는 구조를 큐라고 한다.
일반적인 큐는 먼저 줄 선 사람이 먼저 입장하는
것과 같이 줄을 서는 행위와 유사하다.
FIFO(First-in, First-out), LILO(Last-in, Last-out)
방식(정책)이라고도 하며 스택과는 정반대의 형태이다.
데이터를 넣을 때는 위와 같이
앞쪽부터 순서대로 들어가고,
출력될 때는 앞에서부터 출력되며
잔여 데이터가 따라 붙는다.
당연히 이 상태에서 데이터를 추가하면
남은 데이터 뒤부터 차례로 쌓이다.
알아둘 용어
FIFO 뜻 (위 참고)
Enqueue : 큐에 데이터를 넣는 기능
Dequeueu : 큐에 데이터를 꺼내는 기능
파이썬 큐 라이브러리
일반적인 큐의 기본적인 구조는
FIFO이지만 변형된 구조도 있다.
그 종류엔 우선순위 큐와 LIFO 큐가 있다.
Queue() : 가장 일반적인 큐 (FIFO)
LifoQueueu() : 변형(특이) 큐 LIFO
★PriorityQueue() : 데이터를 넣을 때 각각의
데이터마다 우선순위를 같이 부여하여 데이터를
추출할 때 우선순위가 높은* 데이터부터 출력하게
하는 큐이다. 즉, 넣는 시간 순서가 아닌 부여한
우선순위에 따라 데이터를 추출하는 순서가
달라진다. 따라서 자료구조를 넘어 알고리즘에도
많이 쓰이는 큐 정책이니 잘 알아두는 것이 좋다.
참고로 대입할 때는 튜플 형태로 대입한다.
*우선순위가 높다 = 숫자가 작다.
ex_1위가 2위보다 우선순위가 높다.
import queue
data_queue = queue.PriorityQueue()
# 데이터 입력
data_queue.put((13,"strawberry"))
data_queue.put((1,"apple"))
data_queue.put((4,5))
data_queue.put((20,"fig"))
# 데이터 출력
data_queue.get()
output >>> (1, "apple")
면접 질문.
큐가 어디에 많이 쓰이나요??
운영체제에서는 멀티 태스킹을 위한
프로세스 스케쥴링 방식을 구현하기 위해서
많이 쓰인다. (운영체제에 대한 이해 필요)
'자료구조 및 알고리즘' 카테고리의 다른 글
자료구조 05 : 시간 복잡도 (time complexity) (0) | 2022.10.03 |
---|---|
자료구조 04 : 링크드 리스트 (linked list) (0) | 2022.10.02 |
자료구조 03 : 스택 (stack) (0) | 2022.09.22 |
자료구조 01 : 배열 (array) (0) | 2022.09.21 |