코드

Min Stack

ehei 2020. 2. 12. 23:54

https://leetcode.com/problems/min-stack/

 

스택을 구현하는 문제. 쉽다.

class MinStack:

    def __init__(self):
        """
        initialize your data structure here.
        """
        self.__min = float( 'inf' )
        self.__stack = []
        

    def push(self, x: int) -> None:
        self.__min = min( self.__min, x )
        self.__stack.insert( 0, x )
        

    def pop(self) -> None:
        stack = self.__stack
        value = stack[ 0 ]
        self.__stack = stack[ 1 : ]
        
        if value == self.__min:
            self.__min = float( 'inf' )
            
            for value in self.__stack:
                self.__min = min( value, self.__min )
        

    def top(self) -> int:
        return self.__stack[ 0 ]
        

    def getMin(self) -> int:
        return self.__min
        


# Your MinStack object will be instantiated and called as such:
# obj = MinStack()
# obj.push(x)
# obj.pop()
# param_3 = obj.top()
# param_4 = obj.getMin()