1. 큐 구조
- 줄을 서는 행위와 유사
- 가장 먼저 넣은 데이터를 가장 먼저 꺼낼 수 있는 구조
- 음식점에서 가장 먼저 줄을 선 사람이 제일 먼저 음식점에 입장하는 것과 동일
- FIFO(First-In, First-Out) 또는 LILO(Last-In, Last-Out) 방식으로 스택과 꺼내는 순서가 반대
2. 알아둘 용어
- Dequeue: 큐에서 데이터를 꺼내는 기능
- Visualgo 사이트에서 시연해보며 이해하기 (enqueue/dequeue 클릭해보기): https://visualgo.net/en/list
3.1. Queue()로 큐 만들기 (가장 일반적인 큐, FIFO(First-In, First-Out))
큐를 만들고 "funcoding", 1을 넣음
큐의 크기를 확인하는 함수
get 함수는 제일 먼저 들어간 값을 꺼내는 함수기 때문에 괄호안에 값을 넣을 필요가 없다.
3.2. LifoQueue()로 큐 만들기 (LIFO(Last-In, First-Out))
LIFO는 마지막에 넣은 자료가 먼저 나오기 때문에 1이 먼저 나온 모습
3.3. PriorityQueue()로 큐 만들기
PriorityQueue로 만들었을 때 put(())에서 안쪽의 괄호는 튜플을 나타낸다
튜플의 왼쪽에는 우선순위 오른쪽에는 값을 넣고 우선순위의 숫자가 낮을 수록 먼저 나온다
참고: 어디에 큐가 많이 쓰일까?
- 멀티 태스킹을 위한 프로세스 스케쥴링 방식을 구현하기 위해 많이 사용됨 (운영체제 참조)
큐의 경우에는 장단점 보다는 (특별히 언급되는 장단점이 없음), 큐의 활용 예로 프로세스 스케쥴링 방식을 함께 이해해두는 것이 좋음
4. 프로그래밍 연습
연습1: 리스트 변수로 큐를 다루는 enqueue, dequeue 기능 구현해보기
enqueue는 append 함수를 이용하여 만들고
dequeue는 리스트의 첫번째 자리에 있는 값을 사용하기 위해 [0]값을 사용하고
그 자리는 삭제해주기 위해 del을 이용하여 [0]값을 삭제한다.
'자료구조' 카테고리의 다른 글
해쉬 테이블 (Hash Table) (0) | 2022.03.29 |
---|---|
알고리즘 복잡도 표현 기법 (0) | 2022.03.24 |
링크드리스트(Linked List) (0) | 2022.03.16 |
스택(Stack) (0) | 2022.03.09 |
배열 (0) | 2022.03.07 |