์คํ(Stack)์ด๋?
๋จผ์ ์ ๋ ฅํ ๋ฐ์ดํฐ๋ฅผ ์ ์ผ ๋์ค์ ๊บผ๋ผ ์ ์๋ ์๋ฃ๊ตฌ์กฐ
- FILO(First In Last Out) : ๋จผ์ ๋ค์ด๊ฐ ๊ฒ์ด ๋ง์ง๋ง์ ๋์ค๋ ๊ท์น
- push : ์คํ์ ์ฝ์ ํ๋ ์ฐ์ฐ / pop : ์คํ์์ ๊บผ๋ด๋ ์ฐ์ฐ
์คํ์ ๋์์๋ฆฌ
์คํ์ ADT (Abstract Data Type)
์ถ์ ์๋ฃํ์ด๋ผ๋ ๋ป์ผ๋ก ์ธํฐํ์ด์ค๋ง ์๊ณ ์ค์ ๋ก ๊ตฌํ์ ๋์ง์์ ์๋ฃํ
๊ตฌ๋ถ | ์ ์ | ์ค๋ช |
์ฐ์ฐ | boolean isFull() | ์คํ์ ๋ค์ด์๋ ๋ฐ์ดํฐ ๊ฐ์๊ฐ maxsize์ธ์ง ํ์ธํด boolean๊ฐ ๋ฐํ (๊ฐ๋ ์ฐจ ์๋ค๋ฉด True / ์๋๋ฉด False) |
boolean isEmpty() | ์คํ์ ๋ค์ด์๋ ๋ฐ์ดํฐ๊ฐ ํ๋๋ ์๋์ง ํ์ธํด boolean๊ฐ ๋ฐํ (๋ฐ์ดํฐ๊ฐ ํ๋๋ผ๋ ์์ผ๋ฉด False / ์๋๋ฉด True) |
|
void push(Item Tyoe item) | ์คํ์ ๋ฐ์ดํฐ๋ฅผ ํธ์ | |
ItemType pop() | ์คํ์์ ์ต๊ทผ์ ํธ์ํ ๋ฐ์ดํฐ๋ฅผ ํํ๊ณ ๊ทธ ๋ฐ์ดํฐ ๋ฐํ | |
์ํ | Int top | ์คํ์์ ์ต๊ทผ์ ํธ์ํ ๋ฐ์ดํฐ์ ์์น๋ฅผ ๊ธฐ๋ก |
ItemType data[maxsize] | ์คํ์ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฐ์ด (์ต๋ maxsize๊ฐ์ ๋ฐ์ดํฐ ๊ด๋ฆฌ) |
์คํ์ ์ธ๋ถ๋์
์คํ ๊ตฌํํ๊ธฐ
stack = [] # ์คํ ๋ฆฌ์คํธ ์ด๊ธฐํ
max_size = 10 # ์คํ์ ์ต๋ํฌ๊ธฐ
# ์คํ์ด ๊ฐ๋์ฐผ๋์ง ํ์ธํ๋ ํจ์
def isFull(stack):
return len(stack) == max_size
# ์คํ์ด ๋น์ด์๋์ง ํ์ธํ๋ ํจ์
def isEmpty(stack):
return len(stack) == 0
# ์คํ์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๋ ํจ์
def push(stack, item):
if isFull(stack):
print("์คํ์ด ๊ฐ๋ ์ฐผ์ต๋๋ค.")
else:
stack.append(item)
print("๋ฐ์ดํฐ๊ฐ ์ถ๊ฐ๋์์ต๋๋ค.")
# ์คํ์์ ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ด๋ ํจ์
def pop(stack):
if isEmpty(stack):
print("์คํ์ด ๋น์ด์์ต๋๋ค.")
return None
else:
return stack.pop()
- ํ์ด์ฌ์ ๋ฆฌ์คํธ๋ ํฌ๊ธฐ๋ฅผ ๋์ ์ผ๋ก ๊ด๋ฆฌํ๋ฏ๋ก ์ค์ ์ฝ๋์์ max_size, isFull(), isEmpty() ํจ์ ๊ตฌํ X
- push(), pop() ํจ์๊ฐ ํ๋ ์ผ์ ๋ฆฌ์คํธ์ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ๊ฒ ๋ฟ์ด๋ฏ๋ก ๊ตณ์ด ๊ตฌํ X
- ์์ ์ฝ๋๋ฅผ ์๋ ์ฝ๋๋ก ๋ฐ๊พธ์ด์ ์ฌ์ฉ
stack = []
# ์คํ์ ๋ฐ์ดํฐ ์ถ๊ฐ
stack.append(1)
stack.append(2)
stack.append(3)
# ์คํ์์ ๋ฐ์ดํฐ ๊บผ๋ด๊ธฐ
top_element = stack.pop() # top_element = 3
next_element = stack.pop() # next_element = 2
# ์คํ์ ํฌ๊ธฐ ๊ตฌํ๊ธฐ
stack_size = len(stack)
→ ์คํ์ ๊ฐ๋ ์์ฒด๋ ์ด๋ ต์ง ์์ง๋ง ๋ฌธ์ ๋ฅผ ๋ณด๊ณ ์คํ์ ๋ ์ฌ๋ฆฌ๊ธฐ ์ํด ๋ฌธ์ ์ฐ์ต์ด ํ์ !!
โป ์ฐธ๊ณ ์๋ฃ โป
'๊ณต๋ถ ๐ > ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๊ณ ๋ฆฌ์ฆ] ์๋ฃ๊ตฌ์กฐ (4) ํด์ (0) | 2024.07.08 |
---|---|
[์๊ณ ๋ฆฌ์ฆ] ์๋ฃ๊ตฌ์กฐ (3) ํ (0) | 2024.07.02 |
[์๊ณ ๋ฆฌ์ฆ] ์๋ฃ๊ตฌ์กฐ (1) ๋ฐฐ์ด๊ณผ ๋ฆฌ์คํธ (0) | 2024.06.21 |
[์๊ณ ๋ฆฌ์ฆ] ์๊ฐ ๋ณต์ก๋ (0) | 2024.06.19 |
[์๊ณ ๋ฆฌ์ฆ] ์ค๋น ์ฌํญ (0) | 2024.06.17 |