๐ ์คํ(Stack) ์์ ์ ๋ณต
"์ฑ ์ ํ ๊ถ์ฉ ์์๋ค๊ฐ, ์์์๋ถํฐ ํ๋์ฉ ๊บผ๋ด๋ณธ ์ ์์ฃ ?"
์คํ์ ๋ฐ๋ก ๊ทธ๋ฐ ๊ตฌ์กฐ์์.
๐ ์คํ์ด๋?
์คํ(Stack)์ ๋ฐ์ดํฐ๋ฅผ ํ์ชฝ ๋ฐฉํฅ์ผ๋ก๋ง ๋ฃ๊ณ ๊บผ๋ด๋์ ํ ์๋ฃ๊ตฌ์กฐ(linear data structure) ์
๋๋ค.
๊ฐ์ฅ ๋ง์ง๋ง์ ๋ฃ์ ๋ฐ์ดํฐ๊ฐ
๊ฐ์ฅ ๋จผ์ ๋์ค๋ ๊ตฌ์กฐ
๐ LIFO ๊ตฌ์กฐ
| ์ฉ์ด | ๋ป |
|---|---|
| LIFO | Last In, First Out โ ๋์ค์ ๋ค์ด์จ ๊ฒ ๋จผ์ ๋๊ฐ |
๐ฏ ์ด๋ ๊ฒ ์๊ฐํ๋ฉด ์ฌ์์
๐ฅ ํ๋ง๊ธ์ค ํต
๐ ํ๋ง๊ธ์ค ๊ณผ์ ์์๋์? ์ํต ๋ชจ์์ ๋๊ป์ด ์๋ ํต์ด๋๋๋ค ๐ฅซ
- ๊ณผ์๋ ํ ๋ฐฉํฅ(์์์)์ผ๋ก๋ง ๊บผ๋ผ ์ ์์ด์
- ๊ฐ์ฅ ๋์ค์ ๋ฃ์ ๊ณผ์๊ฐ ์ ์ผ ๋จผ์ ๋์์
- ํต ์๋์ ์๋ ๊ณผ์๋ฅผ ๊บผ๋ด๋ ค๋ฉด?
๐ ์ ๊ณผ์๋ค์ ๋จผ์ ๋ค ๋จน์ด์ผ ํด์!
๐ ๊ทธ๋์ ํ๋ง๊ธ์ค๋ ์คํ์ด์์: Last In, First Out
๐งฑ ์คํ์ ๊ธฐ๋ณธ ๋์
| ์ฐ์ฐ | ์ค๋ช |
|---|---|
Push |
์คํ์ ๋งจ ์์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐ |
Pop |
์คํ์ ๋งจ ์ ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ (์ญ์ ๋จ) |
Peek ๋๋ Top |
๊ฐ์ฅ ์์ ์๋ ๋ฐ์ดํฐ๋ฅผ ํ์ธ๋ง (์ญ์ โ) |
isEmpty |
์คํ์ด ๋น์ด ์๋์ง ํ์ธ |
๐ค Pop ํ ๋ ์ธ๋ฑ์ค๋?
โ ์คํ์ ๊ตฌํ ๋ฐฉ์์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
| ๊ตฌํ ๋ฐฉ์ | ์ธ๋ฑ์ค ์ฒ๋ฆฌ ๋ฐฉ์ |
|---|---|
| ๋ฐฐ์ด ๊ธฐ๋ฐ | top ํฌ์ธํฐ๊ฐ ํ ์นธ ์ค์ด๋ฆ (๋ฐ์ดํฐ๋ ์์ด๋ ๋ฌด์๋จ) |
| ์ฐ๊ฒฐ ๋ฆฌ์คํธ ๊ธฐ๋ฐ | ๋ ธ๋๋ฅผ ์ ๊ฑฐํ๋ฉฐ ์ฐ๊ฒฐ์ ๋์ |
์ฆ, pop() ์ ์ธ๋ฑ์ค ์์ฒด๊ฐ ์ฌ๋ผ์ง๋ ๊ฒ ์๋๋ผ,
top ์์น๊ฐ ๋ณ๊ฒฝ๋๋ฉด์ ๋ ์ด์ ์ ๊ทผํ์ง ์๊ฒ ๋๋ ๊ฑฐ์์.
๐งฎ ์ธ๋ฑ์ค์ ๋ฉ๋ชจ๋ฆฌ ์์ ๋ณํ(๋ฐฐ์ด๊ธฐ๋ฐ, ํฌ๊ธฐ5)
โถ๏ธ ์คํ 1: Push(5) โ Push(8) โ Push(10)

๐ฝ ์คํ 2: Pop() โ top ๊ฐ์

- 10์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ญ์ ๋์ง ์์์ง๋ง, top์ด ์ค๋ฉด์ ๋ฌด์๋ฉ๋๋ค.
- ์ฆ, "์ ๊ทผํ ์ ์๋ ์ํ"๊ฐ ๋ ๊ฑฐ์์!
- ์ดํ Pushํ๋ฉด index 2๋ถํฐ ๋ค์ ์ฑ์์ง๊ฒ ๋ผ์.
๐ ๋ฐฐ์ด ๊ธฐ๋ฐ ์คํ์ ํต์ฌ ํน์ง ์ ๋ฆฌ
| ๊ตฌ๋ถ | ์ค๋ช |
|---|---|
| ๊ณ ์ ๋ ํฌ๊ธฐ | ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ๋ฏธ๋ฆฌ ์ ํด๋ฌ์ผ ํด์. ๋ค ์ฑ์ฐ๋ฉด ๋ ์ด์ push() ๋ถ๊ฐ! |
| ๋น ๋ฅธ ์ ๊ทผ | ์ธ๋ฑ์ค๋ฅผ ํตํด ์ง์ ์ ๊ทผํ๋ฏ๋ก, ์กฐํ๋ ๋งค์ฐ ๋น ๋ฆ
๋๋ค. (O(1)) |
| top ์ธ๋ฑ์ค | ๋ฐฐ์ด์ ์ด๋ ์นธ๊น์ง ๋ฐ์ดํฐ๊ฐ ์๋์ง๋ฅผ ๋ํ๋. ์๋ก์ด ๊ฐ์ top + 1์ ์์ฌ์. |
| ๋ฐ์ดํฐ ์ญ์ | pop() ์ ์ค์ ๋ฉ๋ชจ๋ฆฌ๋ ์ง์์ง์ง ์๊ณ , ๋จ์ํ top ์ธ๋ฑ์ค๋ง ๊ฐ์๋ผ์. |
| ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น ๊ฐ๋ฅ์ฑ | ๋ฐฐ์ด์ ๋๋ฌด ํฌ๊ฒ ๋ง๋ค๋ฉด ๋ญ๋น, ๋๋ฌด ์๊ฒ ๋ง๋ค๋ฉด ์ด๊ณผ(push ๋ถ๊ฐ) ๋ฌธ์ ๊ฐ ์๊ฒจ์. |
| ์ค๋ฒํค๋ ์์ | ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ฒ๋ผ ํฌ์ธํฐ(next)๊ฐ ์๊ธฐ ๋๋ฌธ์ ์๋์ ์ผ๋ก ๊ฐ๋ณ๊ณ ๊ตฌ์กฐ๊ฐ ๋จ์ํด์. |
๐ชข ์ฐ๊ฒฐ ๋ฆฌ์คํธ ๊ธฐ๋ฐ ์คํ, ์ด๋ป๊ฒ ์๊ฒผ๋์?
๋ฐฐ์ด ๊ธฐ๋ฐ ์คํ์ ๊ณต๊ฐ์ด ๊ณ ์ ๋์ด ์์ฃ ?
ํ์ง๋ง ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ํ์ํ ๋งํผ ๋์ ์ผ๋ก ๊ณต๊ฐ์ ์ฐ๊ฒฐํด๊ฐ๋ฉฐ ์คํ์ ๋ง๋ค ์ ์์ด์.
โถ๏ธ ์คํ 1: Push(5) โ Push(8) โ Push(10)

๊ฐ๊ฐ์ ๋ ธ๋๋ ๋ฐ์ดํฐ(data) ์ ๋ค์ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋ ์ฐธ์กฐ(next:์ฃผ์๊ฐ) ๋ฅผ ๊ฐ์ง๊ณ ์์ด์.
๊ฐ์ฅ ์ต๊ทผ์ ์ถ๊ฐ๋ 10์ด
top์ ๊ฐ๋ฆฌํต๋๋ค.
๐ฝ ์คํ 2: Pop() โ top ์ด๋

top์ด ์๋๋ก ์ด๋ํ๋ฉด์ 10๋ฒ ๋ ธ๋์์ ์ฐ๊ฒฐ์ด ๋๊ฒจ์.
10์ ๋ค์ ์ฐธ์กฐ๋์ง ์๊ธฐ ๋๋ฌธ์ '๋ ์ด์ ์ฌ์ฉ๋์ง ์๋ ์ํ'๊ฐ ๋ฉ๋๋ค.
๐ก ์๋ฐ๋ ํ์ด์ฌ ๊ฐ์ ์ธ์ด์์๋ ์ด๋ฐ ๋ ธ๋๋ฅผ ๊ฐ๋น์ง ์ปฌ๋ ํฐ(GC)๊ฐ ๋์ค์ ์ ๋ฆฌํด์ค์.
๐ ์ฐ๊ฒฐ ๋ฆฌ์คํธ ์คํ์ ํต์ฌ ํน์ง ์ ๋ฆฌ
| ๊ตฌ๋ถ | ์ค๋ช |
|---|---|
| ์ ์ฐํ ํฌ๊ธฐ | ๋ฐฐ์ด์ฒ๋ผ ์ ํด์ง ํฌ๊ธฐ๊ฐ ์๊ณ , ํ์ํ ๋งํผ ๋์ ์ผ๋ก ๋์ด๋ฉ๋๋ค. |
| ๋น ๋ฅธ ์ฝ์ /์ญ์ | ํญ์ top์์ ์ฝ์ /์ญ์ ๊ฐ ์ผ์ด๋๊ธฐ ๋๋ฌธ์, ์๊ฐ ๋ณต์ก๋๋ O(1)์ ๋๋ค. |
| top ํฌ์ธํฐ | ์คํ์ ๊ฐ์ฅ ์๋ฅผ ๊ฐ๋ฆฌํค๋ฉฐ, ๋ง์ง๋ง์ผ๋ก ์ถ๊ฐ๋ ๋ ธ๋๋ฅผ ์ฐธ์กฐํฉ๋๋ค. |
| ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ | ๊ฐ ๋
ธ๋๋ ์๊ธฐ ๋ค์ ๋
ธ๋์ ์ฃผ์๋ง ์๊ณ ์์ด์ (next) |
๐ก ์คํ์ ์ด๋์ ์ฐ์ผ๊น?
| ํ์ฉ ๋ถ์ผ | ์ค๋ช |
|---|---|
| ํจ์ ํธ์ถ ๊ด๋ฆฌ | ํธ์ถ ์คํ(Call Stack) (์ฌ๊ทํจ์ ๋ฑ) |
| ์คํ ์ทจ์(Undo) | ์ด์ ์ํ๋ฅผ ์์๋๋ก ์ ์ฅ ํ ๋๋๋ฆผ |
| ๊ดํธ ์ง ๊ฒ์ฌ | ์ฌ๋ ๊ดํธ Push, ๋ซ๋ ๊ดํธ Pop |
| DFS ์๊ณ ๋ฆฌ์ฆ | ๊น์ด ์ฐ์ ํ์(Depth First Search) |
๐ ์์ฝ!
์คํ์ ํ์ ์ ์ถ(LIFO) ๊ตฌ์กฐ๋ก
๋์ค์ ๋ฃ์ ๋ฐ์ดํฐ๊ฐ ๋จผ์ ๋์ค๋ ์๋ฃ๊ตฌ์กฐ์์.
์ค์ํ์ "์๊ธฐ โ ๊บผ๋ด๊ธฐ" ๊ฐ๋
๊ณผ ๋งค์ฐ ๋ฎ์ ์์ด์
์ด๋ณด์๋ ์ฝ๊ฒ ์ดํดํ ์ ์๋ ๊ตฌ์กฐ๋๋๋ค ๐
'Computer Science > ์๋ฃ๊ตฌ์กฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ํด์ ํ ์ด๋ธ(Hash Table) (0) | 2026.03.16 |
|---|---|
| ๋ฒ๋ธ ์ ๋ ฌ(Bubble Sort) (0) | 2026.03.03 |