1 ๋ถ„ ์†Œ์š”

๐Ÿ“š ALGORITHM


๐Ÿ“š STACK

์Šคํƒ์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€ ?


๋ฌผ๊ฑด์„ ์Œ“์•„ ์˜ฌ๋ฆฌ๋“ฏ ์ž๋ฃŒ๋ฅผ ์Œ“์•„ ์˜ฌ๋ฆฐ ํ˜•ํƒœ์˜ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.
ํ›„์ž… ์„ ์ถœ ๊ตฌ์กฐ ( Last In First Out )
๋งˆ์ง€๋ง‰์— ์‚ฝ์ž…ํ•œ ์ž๋ฃŒ๋ฅผ ๊ฐ€์žฅ ๋จผ์ € ๊บผ๋‚ธ๋‹ค

์Šคํƒ์— ์ž๋ฃŒ๋ฅผ ์‚ฝ์ž…ํ•˜๊ฑฐ๋‚˜ ์Šคํƒ์—์„œ ์ž๋ฃŒ๋ฅผ ๊บผ๋‚ผ ์ˆ˜ ์žˆ๋‹ค.
์Šคํƒ์— ์ €์žฅ๋œ ์ž๋ฃŒ๋Š” ์„ ํ˜• ๊ตฌ์กฐ๋ฅผ ๊ฐ–๋Š”๋‹ค
์Šคํƒ์€ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
์Šคํƒ์€ ๋ฐฐ์—ด๊ณผ ๋‹ฌ๋ฆฌ i๋ฒˆ์งธ ํ•ญ๋ชฉ์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค
์Šคํƒ์€ ๋ฐฐ์—ด์ฒ˜๋Ÿผ ์›์†Œ๋ฅผ ํ•˜๋‚˜์”ฉ ์˜†์œผ๋กœ ๋ฐ€์–ด ์ค„ ํ•„์š”๊ฐ€ ์—†๋‹ค
์Šคํƒ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€, ์‚ญ์ œํ•˜๋Š” ์‹œ๊ฐ„์ด ๋น ๋ฅด๋‹ค

  • ์„ ํ˜• ๊ตฌ์กฐ : ์ž๋ฃŒ ๊ฐ„์˜ ๊ด€๊ณ„๊ฐ€ 1:1 ๊ด€๊ณ„๋ฅผ ๊ฐ–๋Š”๋‹ค
  • ๋น„์„ ํ˜• ๊ตฌ์กฐ : ์ž๋ฃŒ ๊ฐ„์˜ ๊ด€๊ณ„๊ฐ€ 1:N ๊ด€๊ณ„๋ฅผ ๊ฐ–๋Š”๋‹ค (ํŠธ๋ฆฌ)

์ฃผ์š” ๋ฉ”์„œ๋“œ

  • push(item) : item์„ STACK์— ์ €์žฅํ•œ๋‹ค ( ์‚ฝ์ž… )
  • pop() : STACK์—์„œ ์ž๋ฃŒ๋ฅผ ๊บผ๋‚ธ๋‹ค ( ์‚ญ์ œ )
    ์‚ฝ์ž…ํ•œ ์ž๋ฃŒ์˜ ์—ญ์ˆœ์œผ๋กœ ๊บผ๋‚ธ๋‹ค
  • peek() : STACK์˜ TOP์— ์žˆ๋Š” ์›์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค ( ๊บผ๋‚ด๋Š”๊ฑฐ ์•„๋‹˜ )
  • inEmpty() : STACK์ด ๋น„์–ด์žˆ์œผ๋ฉด True, ์•ˆ ๋น„์–ด์žˆ์œผ๋ฉด False
  • size() : STACK์˜ ์‚ฌ์ด์ฆˆ๋ฅผ ์ถœ๋ ฅํ•ด์ค€๋‹ค
  • clear() : STACK์˜ ๋ชจ๋“  ์ž๋ฃŒ๋“ค์„ ์‚ญ์ œํ•œ๋‹ค
  • display() : STACK ๋‚ด์˜ ๋ชจ๋“  ์š”์†Œ ์ถœ๋ ฅ

์Šคํƒ์˜ ์‚ฌ์šฉ

์žฌ๊ท€ ์•Œ๊ณ ๋ฆฌ์ฆ˜

์›น ๋ธŒ๋ผ์šฐ์ € ๋ฐฉ๋ฌธ๊ธฐ๋ก

์‹คํ–‰ ์ทจ์†Œ ( undo )

์—ญ์ˆœ ๋ฌธ์ž์—ด ๋งŒ๋“ค๊ธฐ


์ˆ˜์‹์˜ ๊ด„ํ˜ธ ๊ฒ€์‚ฌ

  1. ๊ด„ํ˜ธ์˜ ์ง์„ ๋ฐฐ์—ด์— ์ €์žฅ
  2. โ€™(โ€˜ ์„ ๋งŒ๋‚˜๋ฉด push
  3. โ€™)โ€™ ์„ ๋งŒ๋‚˜๋ฉด ์ง ํ™•์ธํ•˜๊ณ  ๋งž์œผ๋ฉด pop

๊ณ„์‚ฐ๊ธฐ ๊ณ„์‚ฐ

์ค‘์œ„ ํ‘œ๊ธฐ๋ฒ•์„ ํ›„์œ„ ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ๋ฐ”๊พผ ํ›„ ํ›„์œ„ ํ‘œ๊ธฐ๋ฒ•์„ ๊ณ„์‚ฐํ•œ๋‹ค

  • ์ค‘์œ„ ํ‘œ๊ธฐ๋ฒ• -> ํ›„๊ธฐ ํ‘œ๊ธฐ๋ฒ•

์—ฐ์‚ฐ์ž ์šฐ์„ ์ˆœ์œ„๋Š” ์ˆซ์ž๋กœ ํ‘œํ˜„ํ•ด ๋†“๋Š”๋‹ค.

  1. ์Šคํƒ์ด ๋น„์–ด์žˆ์œผ๋ฉด push
  2. ์Šคํƒ์ด ์•ˆ ๋น„์–ด์žˆ์œผ๋ฉด ์ž…๋ ฅ์—ฐ์‚ฐ์™€ STACK์˜ TOP ์—ฐ์‚ฐ์ž ๋น„๊ต
  3. TOP์ด ๋” ํฐ ๊ฒฝ์šฐ TOP์„ pop ํ•˜๊ณ  ์ž…๋ ฅ๊ฐ’์„ push ํ•ด์ค€๋‹ค. ๊ทธ๋ฆฌ๊ณ  TOP ๊ฐ’์„ ๋‹ค์‹œ push ํ•ด์ค€๋‹ค.
  4. ์ž…๋ ฅ๊ฐ’์ด ๋” ํฐ ๊ฒฝ์šฐ ๊ทธ๋ƒฅ push ํ•œ๋‹ค.


  • ํ›„์œ„ ํ‘œ๊ธฐ๋ฒ• ๊ณ„์‚ฐ
  1. ์ž…๋ ฅ์ด ์ˆซ์ž์ธ ๊ฒฝ์šฐ push
  2. ์ž…๋ ฅ์ด ์—ฐ์‚ฐ์ž์ด๋ฉด 2๊ฐœ๋ฅผ pop ํ•ด์„œ ๊ณ„์‚ฐ ํ•ด์ฃผ๊ณ  ๊ทธ ๊ฒฐ๊ณผ๊ฐ’์„ push
  3. ๋งˆ์ง€๋ง‰์— ๋‚จ์€ ์ˆ˜๊ฐ€ ๊ณ„์‚ฐ ๊ฒฐ๊ณผ

Function call

ํ”„๋กœ๊ทธ๋žจ์—์„œ์˜ ํ•จ์ˆ˜ ํ˜ธ์ถœ๊ณผ ๋ณต๊ท€์— ๋”ฐ๋ฅธ ์ˆ˜ํ–‰ ์ˆœ์„œ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค

  1. ํ•จ์ˆ˜ ํ˜ธ์ถœ์ด ๋ฐœ์ƒํ•˜๋ฉด ์ •๋ณด๋ฅผ ์Šคํƒ ํ”„๋ ˆ์ž„์— ์ €์žฅํ•˜์—ฌ ์‹œ์Šคํ…œ ์Šคํƒ์— ์‚ฝ์ž…
  2. ํ•จ์ˆ˜์˜ ์‹คํ–‰์ด ๋๋‚˜๋ฉด ์‹œ์Šคํ…œ ์Šคํƒ์˜ top ์›์†Œ๋ฅผ popํ•˜๋ฉด์„œ ํ”„๋ ˆ์ž„์— ์ €์žฅ๋˜์–ด ์žˆ๋˜ ๋ณต๊ท€์ฃผ์†Œ๋ฅผ ํ™•์ธํ•˜๊ณ  ๋ณต๊ท€
  3. ์ด ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜์—ฌ ์ „์ฒด ํ”„๋กœ๊ทธ๋žจ ์ˆ˜ํ–‰์ด ์ข…๋ฃŒ๋˜๋ฉด ์‹œ์Šคํ…œ ์Šคํƒ์€ ๊ณต๋ฐฑ ์Šคํƒ์ด ๋œ๋‹ค





๐Ÿ‘ ์ฐธ์กฐ
https://gmlwjd9405.github.io/2018/08/03/data-structure-stack.html/a>