- ํ์ด์ฌ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์คํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํ์ง ์์ง๋ง, ๋ฆฌ์คํธ๋ฅผ ์ด์ฉํด ์คํ์ ๊ตฌํํ ์ ์๋ค.
- ์คํ์ LIFO(Last In, First Out) ๋ฐฉ์์ผ๋ก ๋์ํ๋ฉฐ, ๋ง์ง๋ง์ ์ถ๊ฐ๋ ํญ๋ชฉ์ด ๊ฐ์ฅ ๋จผ์ ์ ๊ฑฐ๋๋ ๊ตฌ์กฐ
- ํ์ด์ฌ ๋ฆฌ์คํธ์ ๋ช ๊ฐ์ง ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ์คํ์ ๊ธฐ๋ณธ ์ฐ์ฐ์ ๊ตฌํํ ์ ์๋ค.
1.์คํ ์ฐ์ฐ
- push: ์คํ์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๋ ์ฐ์ฐ
stack = []
stack.append(10) # ์คํ์ 10 ์ถ๊ฐ
stack.append(20) # ์คํ์ 20 ์ถ๊ฐ
print(stack) # ์ถ๋ ฅ: [10, 20]
- pop: ์คํ์์ ๊ฐ์ฅ ๋ง์ง๋ง์ ์ถ๊ฐ๋ ๋ฐ์ดํฐ๋ฅผ ์ ๊ฑฐํ๊ณ ๋ฐํํ๋ ์ฐ์ฐ
popped_element = stack.pop() # ์คํ์์ ๊ฐ์ฅ ์์ ์๋ 20์ ์ ๊ฑฐํ๊ณ ๋ฐํ
print(popped_element) # ์ถ๋ ฅ: 20
print(stack) # ์ถ๋ ฅ: [10]
- isFull: ์คํ์ด ๊ฐ๋ ์ฐผ๋์ง ํ์ธํ๋ ์ฐ์ฐ (ํ์ด์ฌ ๋ฆฌ์คํธ๋ ๋์ ์ผ๋ก ํฌ๊ธฐ๊ฐ ๋์ด๋๋ฏ๋ก ๋ฐ๋ก ๊ตฌํํ์ง ์์)
max_size = 10
def isFull(stack):
return len(stack) == max_size
print(isEmpty(stack)) # ์ถ๋ ฅ: False (์คํ์ 10์ด ์์)
- isEmpty: ์คํ์ด ๋น์ด ์๋์ง ํ์ธํ๋ ์ฐ์ฐ
def isEmpty(stack):
return len(stack) == 0
print(isEmpty(stack)) # ์ถ๋ ฅ: False (์คํ์ 10์ด ์์)
- top (peek): ์คํ์ ๊ฐ์ฅ ์์ ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ๋, ์ ๊ฑฐํ์ง ์์
def top(stack):
if isEmpty(stack):
return None
return stack[-1]
print(top(stack)) # ์ถ๋ ฅ: 10 (์คํ์ ๋งจ ์ ์์)
์ฝํ
์์ ๊ดํธ ๋ฌธ์ ๋์ค๋ฉด ์คํ ์๊ฐ!
์ง์ ์ง๋๋ค ๋์ค๋ฉด ์คํ ์๊ฐ!
์ด๋ค ๋ชจ๋ ๊ฐ์ฅ ์ต๊ทผ์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๋น๊ตํ๋ ์๋ฆฌ -> ์คํ
๋ฌธ์
https://school.programmers.co.kr/learn/courses/30/lessons/76502
์ด ๋ฌธ์ ์์ ์ด ๋ถ๋ถ ์๊ฐํ๋๊ฒ ํ๋ค์๋ค.
ํ์ ์ํจ ๋ฐฐ์ด์ ์๊ฐํด๋ณด์
n = len(s)
for i in range(n):
stack = [ ]
for j in range(n):
c = s[(i + j) % n]
์คํ๋ฌธ์ ์์ ๋ง์ด ์ค์ํ๋ ๋ถ๋ถ: ์คํ์ด ๋น์๋์ง ์ฒดํฌํด์ผ ํ๋ค.
'๐ฏ์๊ณ ๋ฆฌ์ฆ > ์๊ณ ๋ฆฌ์ฆ ์ ๋ฆฌ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํด์ (1) | 2024.09.12 |
---|---|
๋ฐฐ์ด (1) | 2024.09.09 |
์ฝํ ์ ๋ฆฌ (0) | 2024.09.09 |