Computer Science/์ž๋ฃŒ๊ตฌ์กฐ

์ž๋ฃŒ๊ตฌ์กฐ - ์Šคํƒ(Stack)

UNarD 2025. 4. 17. 12:20

๐ŸŽ ์Šคํƒ(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