ํฐ์คํ ๋ฆฌ ๋ทฐ
๐๏ธโ๏ธ ๊ธฐ๋ฐ ๋ค์ง๊ธฐ/์๋ฃ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ
์๋ฃ๊ตฌ์กฐ: Queue
dirmathfl 2020. 6. 15. 20:46728x90
๋ฐ์ํ
Queue?
๊ฐ์ฅ ์ฒ์์ ์ฝ์ ๋ ๋ฐ์ดํฐ๋ฅผ ๋จผ์ ๋บ ์ ์๋ ๋ฐฉ์(First in First Out) ํ์์ ์๋ฃ๊ตฌ์กฐ
Queue์ ์ฐ์ฐ
-
enqueue(data) : data๋ฅผ Queue์ ๊ฐ์ฅ ๋ง์ง๋ง์ ์ถ๊ฐํ๋ค.
-
dequeue() : Queue์ ๊ฐ์ฅ ์ต๊ทผ์ ์ถ๊ฐ๋ data๋ฅผ ์ ๊ฑฐํ๊ณ ๋ฐํํ๋ค.
-
peek() : pop()๊ณผ ๋ฌ๋ฆฌ ๊ฐ์ฅ ์ต๊ทผ์ ์ถ๊ฐ๋ data๋ฅผ ๋ฐํํ๊ณ , ์ ๊ฑฐํ์ง ์๋๋ค.
-
is_empty() : pop()์ ์ํํ๊ธฐ ์ํด์๋ ์ถ๊ฐ๋ data๊ฐ ์กด์ฌํ์ฌ์ผ ํ๋๋ฐ ์ด๋ฅผ ํ๋ณํ๊ธฐ ์ํจ์ด๋ค.
Queue๋ฅผ ํ์ฉํ๋ ๊ฒฝ์ฐ
-
์ ์ ์ ์ถ์ด ํ์ํ ๊ฒฝ์ฐ
-
ํ๋ก์ธ์ค ๊ด๋ฆฌ, ์ฐ์ ์์ ๋๊ธฐ์ด, ํ๋ฆฐํฐ ์ถ๋ ฅ ์ฒ๋ฆฌ ๋ฑ
-
-
BFS ๊ตฌํ
-
Queue์ ์ ์ ์ ์ถ ๋ฐฉ์์ ํตํด BFS๋ฅผ ๊ตฌํํ ์ ์๋ค.
- DFS์ ๊ฒฝ์ฐ Stack์ ์ฌ์ฉํ๋ฉด ๋๋ค.
-
Python์ผ๋ก Queue ๊ตฌํํ๊ธฐ
class Queue:
def __init__(self, size):
self.size = size
self.items = []
def enqueue(self, data):
if len(self.items) < self.size:
self.items.append(data)
else:
return -1
def dequeue(self):
if self.is_empty():
return None
return self.items.pop(0)
def peek(self):
return self.items[0]
def is_empty(self):
return True if not self.items else False
- Stack๊ณผ ๋ค๋ฅธ์ ์ pop๊ณผ peek๋ฅผ ํ ๊ฒฝ์ฐ ๋ฆฌ์คํธ์ 0๋ฒ์งธ ์ธ๋ฑ์ค๋ฅผ ์ ๊ทผํ๋ค๋ ๊ฒ์ด๋ค.
728x90
๋ฐ์ํ
'๐๏ธโโ๏ธ ๊ธฐ๋ฐ ๋ค์ง๊ธฐ > ์๋ฃ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๊ณ ๋ฆฌ์ฆ: ์ ๋ ฌ (0) | 2020.06.17 |
---|---|
์๊ณ ๋ฆฌ์ฆ: DFS์ BFS (0) | 2020.06.16 |
์๊ณ ๋ฆฌ์ฆ: Recursion (0) | 2020.06.16 |
์๋ฃ๊ตฌ์กฐ: Linked List (0) | 2020.06.15 |
์๋ฃ๊ตฌ์กฐ: Stack (0) | 2020.06.15 |
๋๊ธ
๊ธ ๋ณด๊ดํจ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ