줘이리의 인생적기

자료구조 - 큐 queue 본문

공부/자료구조&알고리즘

자료구조 - 큐 queue

줘이리 2022. 1. 14. 23:00
728x90

큐에 대해서 !

 

큐의 구조에 대해서 먼저 알아보고 관련된 용어, 라이브러리를 불러와서 구현까지 해보겠다

 

큐는 가장 먼저 넣은 데이터를 가장 먼저 꺼낼 수 있는 구조이다.

예를 들자면, 줄을 서는 행위와 매우 유사하다. 줄을 먼저 선 사람이 제일 먼저 입장하는 것처럼.

이러한 정책을 FIFO(First-in, First-Out) 정책이라고 한다

 

관련된 용어로는 Enqueue, Dequeue가 있고,

Enqueue는 큐에 데이터를 넣는다는 뜻, Dequeue는 큐에서 데이터를 꺼낸다는 뜻이다.

데이터를 넣으면 제일 뒷부분에 데이터가 들어가고 데이터를 꺼내면 제일 앞에 있는 데이터가 출력된다.

 

이제 라이브러리를 사용해보자

import queue

queue_example = queue.Queue()

# data 넣기
queue_example.put("Hellow World")
queue_example.put(9)

# queue size 확인하기
queue_example.qsize()

# queue 데이터 빼기
queue_example.get()
queue_example.get()

queue_example.qsize()

위 코드를 보면 put을 통해 Hello World와 9가 순차적으로 들어간 후 사이즈가 2가 되고,

get을 통해 Hellow World와 9가 순차적으로 빼지고 사이즈가 0이 되는 것을 알 수 있다.

 

queue는 멀티 태스킹을 위한 프로세스 스케쥴링 방식을 구현하기 위해 많이 사용된다.!

잘 알아두자!


추가로 나중에 배우지만 stack 기능을 하는 queue라이브러리가 있다. 

LIFO(Last-In, First-Out)정책을 사용하는데 코드를 통해 알아보자

 

import queue

queue_example = queue.LifoQueue()

queue_example.put("hello world")
queue_example.put(10)

queue_example.qsize()

queue_example.get()

위 예제에서는 qsize는 동일하게 2, get함수는 LIFO 정책에 의해 10이 나온다.

 

 

마지막으로 우선순위에 의해 데이터가 쌓이는 라이브러리를 알아보자

import queue

queue_example = queue.PriorityQueue()

queue_example.put((5, "korea"))
queue_example.put((15, "china"))
queue_example.put((10, "japan"))

queue_example.qsize()

queue_example.get()
queue_example.get()
queue_example.get()

코드를 보면 숫자를 통해 우선순위를 지정할 수 있다.

qsize는 3이 나오며, 첫 번째 get 함수에서는 (5, 'korea') 값이 나온다.

두 번째 get 함수에서는 (10, 'japan'), 세 번째 get 함수에서는 (15, 'china')가 나온다.

 

'공부 > 자료구조&알고리즘' 카테고리의 다른 글

자료구조 - 스택 stack  (0) 2022.01.26
자료구조 - 배열[배][열]  (0) 2022.01.10
자료구조!? 알고리즘??!!  (0) 2022.01.07