ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

728x90
๋ฐ˜์‘ํ˜•

Stack?

๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ์‚ฝ์ž…๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋จผ์ € ๋บ„ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹(Last in First Out) ํ˜•์‹์˜ ์ž๋ฃŒ๊ตฌ์กฐ

 

Stack์˜ ์—ฐ์‚ฐ

  • push(data) : data๋ฅผ stack์˜ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ์ถ”๊ฐ€ํ•œ๋‹ค.
  • pop() : stack์˜ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ์ถ”๊ฐ€๋œ data๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • peek() : pop()๊ณผ ๋‹ฌ๋ฆฌ ๊ฐ€์žฅ ์ตœ๊ทผ์— ๋งˆ์ง€๋ง‰์˜ data๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ์ œ๊ฑฐํ•˜์ง„ ์•Š๋Š”๋‹ค.
  • is_empty() : pop()์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ถ”๊ฐ€๋œ data๊ฐ€ ์กด์žฌํ•˜์—ฌ์•ผ ํ•˜๋Š”๋ฐ ์ด๋ฅผ ํŒ๋ณ„ํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค.

 

Stack์„ ํ™œ์šฉํ•˜๋Š” ๊ฒฝ์šฐ

  • ์žฌ๊ท€ ํ˜ธ์ถœ
    • ์žฌ๊ท€์ ์œผ๋กœ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒฝ์šฐ, ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ํ˜ธ์ถœ๋œ ํ•จ์ˆ˜ ๋ถ€ํ„ฐ ์ฐจ๋ก€๋กœ ์‹คํ–‰๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    • ๋”ฐ๋ผ์„œ ์žฌ๊ท€ ํ˜ธ์ถœ์˜ ๊ฒฝ์šฐ Stack์„ ํ†ตํ•ด ์ด๋ฅผ ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•œ๋‹ค.
  • ์ˆ˜์‹์˜ ๊ด„ํ˜ธ ๊ฒ€์‚ฌ

    • (())์™€ ๊ฐ™์€ ๊ด„ํ˜ธ์˜ ์—ด๋ฆผ, ๋‹ซํž˜์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์Œ์„ ์ด๋ฃจ๋Š”์ง€ ํŒ๋ณ„ํ•˜๊ณ ์ž ํ• ๋•Œ Stack์„ ํ™œ์šฉํ•˜์—ฌ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํ›„์œ„ ํ‘œ๊ธฐ๋ฒ• ๋ณ€ํ™˜ ๋ฐ ๊ณ„์‚ฐ
    • ์ˆซ์ž๋ฅผ stack์— ๋„ฃ์€ ํ›„ ์—ฐ์‚ฐ ๊ธฐํ˜ธ๋‚˜ ๊ด„ํ˜ธ๋ฅผ ๋งŒ๋‚˜๋ฉด ํ•ด๋‹น ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ์ˆซ์ž๋ฅผ ์ถœ๋ ฅํ•˜์—ฌ ์ค‘์œ„ ํ‘œ๊ธฐ์‹์„ ํ›„์œ„ ํ‘œ๊ธฐ์‹์œผ๋กœ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ณ„์‚ฐ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

Python์œผ๋กœ Stack ๊ตฌํ˜„ํ•˜๊ธฐ

class Stack:
    def __init__(self, size):
        self.size = size
        self.items = []

    def push(self, data):
        if len(self.items) < self.size:
            self.items.append(data)
        else:
            return -1

    def pop(self):
        if self.is_empty():
            return None
        return self.items.pop()

    def peek(self):
        return self.items[-1]

    def is_empty(self):
        return True if not self.items else False
  • stack์˜ ํฌ๊ธฐ๊ฐ€ ๊ฐ€๋ณ€์ ์ด์ง€ ์•Š๋‹ค๋ฉด, pushํ•  ๊ฒฝ์šฐ์— overflow๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”์ง€๋„ ํ™•์ธํ•˜์—ฌ์•ผ ํ•œ๋‹ค.
728x90
๋ฐ˜์‘ํ˜•
๋Œ“๊ธ€
๊ธ€ ๋ณด๊ด€ํ•จ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€