Ch 05. 큐(Queue)

2022. 3. 24. 19:57·etc/Algorithm study

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

- FIFO(First-In, First-Out) 또는 (Last-In, Last-Out) 방식이다.

- 스택과 꺼내는 순서가 반대

​

출처: http://www.stoimen.com/blog/2012/06/05/computer-algorithms-stack-and-queue-data-structure/

Queue의 용어

- Enqueue: 큐에 데이터를 넣는 기능

- Dequeue:큐에서 데이터를 꺼내는 기능

​

파이썬에서 queue 라이브러리를 지원해준다.

Queue(), LifoQueue(), PriorityQueue() 등 다양한 라이브러리 제공(프로그램에 따라 적합한 자료 구조를 사용하자)

- Queue(): 가장 일반적인 큐 자료 구조

- LifoQueue(): 나중에 입력된 데이터가 먼저 출력되는 구조 (스택 구조라고 보면 됨)

- PriorityQueue(): 데이터마다 우선순위를 넣어서, 우선순위가 높은 순으로 데이터 출력

​

​

​

Queue()

가장 일반적인 큐 자료 구조

import queue

#queue
data_queue = queue.Queue() # queue 생성

data_queue.put("funcoding") # enqueue
data_queue.put(1)  

data_queue.qsize() # queue의 길이를 알 수 있다.

data_queue.get() # 데이터를 뽑아낸다. 이후 qsize는 "funcoding" 원소가 뽑혀져, 1이다.

LifoQueue()

나중에 입력된 데이터가 먼저 출력되는 구조

import queue

# LifoQueue (스택 구조의 queue)
data_queue = queue.PriorityQueue()

data_queue.put("funcoding")
data_queue.put(1)

data_queue.get() #일반 queue와는 다르게 "funcoding"이 아니라 원소 1이 나온다.

PriorityQueue()

자료구조나 알고리즘에서도 잘 쓰인다.

import queue

#우선 순위가 매겨져 있다.
data_queue = queue.PriorityQueue()

data_queue.put((10, "korea")) #data를 tuple 값으로 넣어준다. 우선순위가 10번이고 실제 데이터 값은 "korea"
data_queue.put((5, 1))
data_queue.put((15, "china"))

data_queue.get() #우선순위가 가장 높은 1이 출력된다.

​

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

큐의 경우에는 장단점 보다는 (특별히 언급되는 장단점이 없다.), 큐의 활용 예로 프로세스 스케쥴링 방식을 함께 이해해두는 것이 좋음

 

리스트 변수로 큐 구현하기
queue_list = list()

def enqueue(data):
    queue_list.append(data)
    
def dequeue():
    data = queue_list[0]
    del queue_list[0]
    return data

'etc > Algorithm study' 카테고리의 다른 글

[백준 1260 / Python(파이썬)] DFS와 BFS  (0) 2022.10.04
[백준 1197 / Python(파이썬)] 최소 스패닝 트리  (0) 2022.07.29
[백준 1700 / 파이썬(Python)] 멀티탭 스케줄링  (0) 2022.07.28
[백준 14179/파이썬(Python)] 빗물  (0) 2022.07.18
CH 06. 스택(Stack)  (0) 2022.03.24
'etc/Algorithm study' 카테고리의 다른 글
  • [백준 1197 / Python(파이썬)] 최소 스패닝 트리
  • [백준 1700 / 파이썬(Python)] 멀티탭 스케줄링
  • [백준 14179/파이썬(Python)] 빗물
  • CH 06. 스택(Stack)
쏘꾸
쏘꾸
  • 쏘꾸
    SOSO
    쏘꾸
  • 전체
    오늘
    어제
    • 분류 전체보기
      • WEB
        • Web Hacking
      • Mobile
        • Android Hacking
        • iOS Hacking
      • Programming
        • C
      • etc
        • Algorithm study
        • Practical Things
      • CVE
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Jailbreak
    iphone x
    iOS 16
    winra1n
    burp suite
    노션
    mitm relay
    pentest
    iOS 탈옥
    tcp
    Notion
    ios17
    IOS
    android hacking
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
쏘꾸
Ch 05. 큐(Queue)
상단으로

티스토리툴바