1. 선입선출! queue
## 선입선출
import queue
data = queue.Queue()
data.put(2)
first = data.get()
2. 후입선출! Stack ( append, pop )
stack = [1,2,3]
stack.append(4)
last = stack.pop()
print(last, stack) # => 4 [1, 2, 3]
##
first = stack.pop(0)
print(last, stack) # => 1 [2, 3, 4]
3. 양방향큐! deque
from collections import deque
deq = deque()
deq.appendleft(10) # Add first
deq.append(0) # Add last
deq.popleft() # pop first
deq.pop() # pop last
# list -> deque
my_list = [1, 2, 3, 4, 5]
my_deque = deque(my_list)
데크(deque)에 존재하는 메서드(method)는 대략 다음과 같다.
- deque.append(item): item을 데크의 오른쪽 끝에 삽입한다.
- deque.appendleft(item): item을 데크의 왼쪽 끝에 삽입한다.
- deque.pop(): 데크의 오른쪽 끝 엘리먼트를 가져오는 동시에 데크에서 삭제한다.
- deque.popleft(): 데크의 왼쪽 끝 엘리먼트를 가져오는 동시에 데크에서 삭제한다.
- deque.extend(array): 주어진 배열(array)을 순환하면서 데크의 오른쪽에 추가한다.
- deque.extendleft(array): 주어진 배열(array)을 순환하면서 데크의 왼쪽에 추가한다.
- deque.remove(item): item을 데크에서 찾아 삭제한다.
- deque.rotate(num): 데크를 num만큼 회전한다(양수면 오른쪽, 음수면 왼쪽)
참조 : https://chaewonkong.github.io/posts/python-deque.html
----------- 다른거임. 앤 트리임 --------------
4. 우선순위 queue (정렬 자동 )
from queue import PriorityQueue
q = PriorityQueue()
q1 = PriorityQueue(maxsize=10) # maxsize를 활용하면 크기 제한 가능
q.put(3) # 원소를 넣는 과정
q.get() # 1
q1.get()[1] # (우선순위, 값)의 형태에서 값 반환
Python의 queue.PriorityQueue 클래스는 우선순위 큐를 구현한 것이며, 내부적으로는 힙(heap)을 사용하여 구현됩니다. 따라서 이것은 힙큐와 같은 개념입니다.
queue.PriorityQueue 클래스는 다음과 같은 특징을 가지고 있습니다:
- 우선순위 큐 구현: 내부적으로 데이터를 우선순위에 따라 저장하고 관리합니다. 가장 높은 우선순위를 가진 요소가 먼저 나오는 특성을 가지고 있습니다.
- 힙을 기반으로 한 구현: PriorityQueue 클래스는 힙(heap)을 사용하여 구현됩니다. 이는 데이터를 삽입하고 삭제하는 과정에서 효율적인 작동을 가능하게 합니다.
따라서 queue.PriorityQueue 클래스는 힙큐와 동일한 개념이며, Python에서는 우선순위 큐를 사용할 때 일반적으로 이 클래스를 활용합니다.
'leetcode' 카테고리의 다른 글
169. Majority Element (top interview 150) (1) | 2024.09.14 |
---|---|
27. Remove Element (0) | 2024.09.09 |
[python][leetcode 2575] Find the Divisibility Array of a String (0) | 2023.02.26 |
[python3] 2476. Closest Nodes Queries in a Binary Search Tree (0) | 2022.11.22 |
python 자료형들 (0) | 2022.08.27 |