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