본문 바로가기
728x90

드디어 큐(NOT TBZ)와 데이터 구조 공부를 제대로 해 본다....

학교 다닐 때 공부 좀 할걸....

 

Queue

선입선출(First In First Out) 기반의 자료 구조

데이터를 추가한 순서대로 제거할 수 있음

 

활용

- 비동기 메세징 (asynchronous messaging)

- 스트리밍 (streaming)

- 너비 우선 탐색(breath first search)

 

구현 방법

1. List

queue = [1, 2, 3]
queue.append(4)
queue.append(5)

print(queue)
# [1, 2, 3, 4, 5]

queue.pop(0)
# 1

queue.pop(0)
# 2

print(queue)
# [3, 4, 5]

- .append 뒤에서 데이터 추가

- .pop(0) 앞에서 데이터 제거

- .insert(index, data)앞에서 데이터 추가

- .pop 뒤에서 데이터 제거

 

2. Deque

collections 모듈의 deque 활용하는 방법

deque (double-ended queue): 데이터를 양방향으로 추가하거나 제거할 수 있는 자료 구조

from collections import deque

queue = deque([4, 5, 6]) #queue 선언
queue.append(7)
# [4, 5, 6, 7]

queue.append(8)
# [4, 5, 6, 7, 8]

queue.popleft()
4
queue.popleft()
5

queue
# deque([6, 7, 8])

- .popleft() 첫 번째 데이터 제거

- .appendleft(data) 맨 앞에 데이터 삽입

 

3 .Queue

queue 모듈의 Queue 클래스를 사용하는 방법

from queue import Queue

queue = Queue()
queue = put(4)
queue.put(5)
queue.put(6)

print(queue)
# [4, 5, 6]

queue.get()
4
queue.get()
5
queue.get()
6

- .put(data) 마지막에 데이터 추가

- .get() 첫 번째 데이터 제거

 

 

2학년 1학기 재학 당시 교수님께서 "전자과 학생들은 데이터 구조들의 헤더를 직접 코딩 할 수 있어야 할까요?" (아니요...) "당연히! 할 수 있어야 한다~" 라고 했던 기억이 새록새록 난다... 무려 7년 전임!!

그때 흘려들었던 것들을 이제서야 수습하고 있다.......

728x90
네이버밴드네이버블로그핀터레스트텔레그램링크드인포켓레딧이메일

개발자 연습생