전체/자료구조
파이썬으로 큐 구현하기
effortDev
2020. 6. 8. 14:25
큐는 줄을 서는 행위와 유사하다.
가장 먼저 넣은 데이터를 가장 먼저 꺼내는 구조이다.
매표소에서 티켓을 구매할때 가장 먼저 줄을 선 사람이 먼저 티켓을 살수 있는 것이다.
FIFO (First In First Out) 정책을 사용한다.
1. 내장함수 큐를 사용하여 구현하기
1 2 3 4 5 6 7 8 9 10 11 12 | # 내장 함수 queue를 사용하여 구현 import queue q = queue.Queue() q.put("a") q.put("b") q.put("c") q.qsize() # 3 q.get() # 'a' q.qsize() # 2 | cs |
맨 처음에 들어간 데이터가 먼저 나온다.
2. LifoQueue()로 큐 만들기
1 2 3 4 5 6 7 8 9 10 11 | # 내장 함수 queue를 사용하여 # Last in First Out Queue 구현하기 import queue q= queue.LifoQueue() q.put("a") q.put("b") q.qsize() # 2 q.get() # 'b' | cs |
마지막에 넣은 데이터가 가장 먼저 나온다.
3. PriorityQueue()로 큐 만들기
1 2 3 4 5 6 7 8 9 | # 우선순위가 높은 큐가 먼저 나온다. import queue q = queue.PriorityQueue() q.put((10, "a")) q.put((5, "b")) q.put((15, "c")) q.qsize() # 3 q.get() # (5, 'b') | cs |
우선순위가 높은 큐가 먼저 나온다.
4. enqueue, dequeue 구현하기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | # 내장함수 사용하지 않고 # enqueue, dequeue 구현하기 q_list = list() def enqueue(data): q_list.append(data) def dequeue(): data = q_list[0] del q_list[0] return data for i in range(10): enqueue(i) print(q_list) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] dequeue() # 0 print(q_list) # [1, 2, 3, 4, 5, 6, 7, 8, 9] enqueue(11) # 11 print(q_list) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 11] | cs |