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

๋ฐ˜์‘ํ˜•

์˜คํ˜ธ ์Šคํƒ ๋‘๊ฐœ๋กœ FIFO ํ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ตฌ๋งŒ ๋ชฐ๋ž๋˜ ์‚ฌ์‹ค!

class MyStack(object):
    def __init__(self):
        self.lst = list()

    def push(self, x):
        self.lst.append(x)

    def pop(self):
        return self.lst.pop()

    def size(self):
        return len(self.lst)


class MyQueue(object):
    def __init__(self, max_size):
        self.stack1 = MyStack()
        self.stack2 = MyStack()
        self.max_size = max_size

    def qsize(self):
        # ํ๊ฐ€ ๊ฐ€์ง„ ์›์†Œ ์ˆ˜๋ฅผ ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.
        return self.stack1.size()

    def push(self, item):
        # ์ž…๋ ฅ๋ฐ›์€ ์ธ์ž x๋ฅผ ํ์— ๋„ฃ์Šต๋‹ˆ๋‹ค.
        # ๋‹จ, ํ˜„์žฌ ํ๊ฐ€ ๊ฝ‰์ฐฌ ๊ฒฝ์šฐ ์ธ์ž๋ฅผ ๋„ฃ์ง€๋ง๊ณ  False๋ฅผ ๋ฆฌํ„ดํ•˜์„ธ์š”.
        if self.stack1.size() == self.max_size:
            return False
        else:
            self.stack1.push(item)
            return True

    def pop(self):
        # ํ๊ฐ€ ๊ฐ€์ง„ ์›์†Œ ์ค‘, ๊ฐ€์žฅ ์ฒ˜์Œ์— ๋“ค์–ด์˜จ ์›์†Œ๋ฅผ ํ์—์„œ ์ œ๊ฑฐํ•˜๊ณ  ๋ฆฌํ„ดํ•ฉ๋‹ˆ๋‹ค.
        # ํ์— ์›์†Œ๊ฐ€ ์—†๋‹ค๋ฉด Empty Exception์„ raise ํ•˜์„ธ์š”.
        # Empty Exception์€ ๋ณธ์ธ์ด ์ง์ ‘ ๋งŒ๋“œ์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค.
        try:
            if self.stack1.size() == 0:
                raise emptyException

            while self.stack1.size() > 0:
                self.stack2.push(self.stack1.pop())

            item = self.stack2.pop()

            while self.stack2.size() > 0:
                self.stack1.push(self.stack2.pop())

            return item

        except emptyException:
            return False


class emptyException(Exception):
    pass


n, max_size = map(int, input().strip().split(' '))
q = MyQueue(max_size)
for i in range(n):
    order = input()

    if order == "POP":
        print(q.pop())
    elif order == "SIZE":
        print(q.qsize())
    else:
        order, a = order.strip().split(' ')
        print(q.push(int(a)))

 

๋ฐ˜์‘ํ˜•

'๊ธฐ๋ก > ์ฝ”ํ…Œ ์Šคํ„ฐ๋”” ๊ธฐ๋ก' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

๋‚˜๋จธ์ง€ ํ•œ์   (0) 2020.07.17
๋ฐฐ๋‹ฌ  (2) 2020.07.13
๋”๋งต๊ฒŒ  (0) 2020.07.12
๋ฐฐ์ƒ ๋น„์šฉ ์ตœ์†Œํ™”  (0) 2020.07.12
๊ธฐ๋Šฅ๊ฐœ๋ฐœ  (0) 2020.07.11
๋Œ“๊ธ€