2021. 1. 6. 01:41ใ๐ Algorithm/๐ Python ๋ฌธ๋ฒ
Queue(ํ) ?!
ํ๋ FIFO (First - In - First - Out) ๋ก์จ ๋จผ์ ์ฝ์ ๋ item ์์ผ๋ก ๊บผ๋ด์ด์ง๋ค๊ณ ์ดํดํ๋ฉด ์ฌ์ธ๊ฑฐ ๊ฐ์ต๋๋ค.
ํ์ ์ข ๋ฅ์๋ ์์ฐจ์ ์ธ ํ์ ์ํ ํ(์ํ์ผ๋ก ์ด๋ฃจ์ด์ง Queue)๊ฐ ์์ต๋๋ค.
Python์์ Queue ๊ตฌํํ๊ธฐ
Python์์๋ collections ๋ชจ๋์ deque ๋ฅผ ํตํด ํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๊ตฌํํฉ๋๋ค.
Deque (๋ฑ) ๊ฐ์ฒด
deque๋ ์คํ๊ณผ ํ๋ฅผ ํฉ์น ์๋ฃ๊ตฌ์กฐ๋ก ๊ฐ์ฅ์๋ฆฌ์ ์์๋ฅผ ๋ฃ๊ฑฐ๋ ๋บ ์ ์์ต๋๋ค.
deque([iterable[, maxlen]]) | deque์ ์ด๊ธฐํ ํจ์ (๋ฆฌ์คํธ, queue์ ์ต๋ ๊ธธ์ด๋ฅผ ๋ฃ์ ์ ์๋ค) |
append(x) | ์์ x๋ฅผ deque ๋งจ ์ค๋ฅธ์ชฝ์ ์ฝ์ |
popleft() | deque์ ๊ฐ์ฅ ์ผ์ชฝ์ ์๋ ์์๋ฅผ ์ ๊ฑฐํ๋ฉฐ ๊ทธ๊ฐ์ ๋ฆฌํด |
clear() | ๋ชจ๋ ์์๋ฅผ ์ง์ด๋ค. |
len(deque) | deque์ ์์์๋ฅผ ์์๋ผ ๋ |
์คํ๊ณผ ๋ฌ๋ฆฌ ํ๋ฅผ list๋ก ์ด์ฉํ์ง ์๋ ์ด์ ๋ !?
์คํ์์ list.append์ list.pop()์ ์ด์ฉํ๋ ๊ฒ ์ฒ๋ผ list.append์ list.pop(0)์ ์ด์ฉํ๋ฉด ๋ฆฌ์คํธ๋ฅผ ํ์ฒ๋ผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํ์ง๋ง pop()์ time complexity๋ O(1)์ธ ๋ฐ๋ฉด์ pop(0)์ time complexity๋ O(N)์ด๊ธฐ ๋๋ฌธ์ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฝ๋๋ค. ๋ฐ๋ผ์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ณ ๋ คํด ๋ฆฌ์คํธ๋ ํ๋ก ์ฌ์ฉํ์ง ์์ต๋๋ค.
Deque๋ฅผ ์ด์ฉํ์ฌ Queue ๊ตฌํํ๊ธฐ
deque - Init
deque ([iterable[, maxlen]]) ์ ์ด์ฉํด ์ด๊ธฐํ ํ ์ ์์ต๋๋ค.
from collections import deque
# ๋น ํ ๋ง๋ค๊ธฐ
deque1 = deque()
# ์์๊ฐ ์๋ ํ ๋ง๋ค๊ธฐ
deque2 = deque([1, 2, 3])
# ํ ์ต๋ ๊ธธ์ด ๋ช
์ํ๊ธฐ(์์ ์๊ฐ maxlen์ ๋๋ฌํ์ ๋ ์๋ก์ด ๊ฐ์ ๋ฃ์ผ๋ฉด, ์์ ๋ฃ์ ๊ฐ์ ์ฌ๋ผ์ง๊ณ -pop์ด ์ผ์ด๋จ- ๋ค์ ์ ๊ฐ์ด ๋ค์ด๊ฐ)
deque3 = deque(maxlen=5)
deque - append(x)
์์ x๋ฅผ ๋ฃ์ ๋, append()์ ์ฌ์ฉํฉ๋๋ค.
from collections import deque
y_deque = deque()
my_deque.append(3)
print(my_deque) #deque([3]
deque - popleft()
ํ์์ ์์๋ฅผ ์ญ์ ํ ๋ ์ฌ์ฉํฉ๋๋ค.
my_deque = deque([1,2,3])
while my_deque:
print("{}์/๋ฅผ popํ์ต๋๋ค".format(my_deque.popleft())
"""
1์/๋ฅผ popํ์ต๋๋ค
2์/๋ฅผ popํ์ต๋๋ค
3์/๋ฅผ popํ์ต๋๋ค
"""
deque - clear()
๋ชจ๋ ์์๋ฅผ ์ง์๋๋ค.
my_deque = deque([1,2,3])
print("์ :", my_deque)
my_deque.clear()
print("ํ:", my_deque)
"""
์ : deque([1, 2, 3])
ํ: deque([])
"""
deque - len(deque)
len() ํจ์๋ฅผ ์ฌ์ฉํ์ฌ deque์ ์์ ์๋ฅผ ์์๋ผ ์ ์์ต๋๋ค.
my_deque = deque([1,2,3], maxlen=5)
print(len(my_deque)) # 3
ํ๋ฒ์ ์ ๋ฆฌํ Python - Queue ์๋ฃ๊ตฌ์กฐ
'๐ Algorithm > ๐ Python ๋ฌธ๋ฒ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python ์๋ฃ๊ตฌ์กฐ] Heap (ํ) (0) | 2021.01.09 |
---|---|
ํ์ด์ฌ์ ํ์ด์ฌ ๋ต๊ฒ (0) | 2020.12.30 |
๋ฆฌ์คํธ(List) / ๋์ ๋๋ฆฌ(Dictionary) ์ ๋ ฌ (0) | 2020.12.29 |