본문 바로가기

컴퓨터/코테

릿코드155 - min Stack [스택]

class MinStack:

    def __init__(self):
        self.stack = []
        self.minStack = []
        self.min = 2**31
        

    def push(self, val: int) -> None:
        self.stack.append(val)
        self.min = self.min if val > self.min else val
        self.minStack.append(self.min)

    def pop(self) -> None:
        num = self.minStack.pop()
        self.stack.pop()
        if not self.minStack : 
            self.min = 2**31
        if num == self.min : 
            self.min = min(self.minStack)
            

    def top(self) -> int:
        return self.stack[-1]

    def getMin(self) -> int:
        return self.minStack[-1]

음 상위 47퍼... min 함수때문이라 생각하고 로직을 좀 더 생각해봤다. 굳이 min 할 필요없이 minStack의 마지막 값을 가져오면 되는거잖아?

class MinStack:

    def __init__(self):
        self.stack = []
        self.minStack = []
        self.min = 2**31
        

    def push(self, val: int) -> None:
        self.stack.append(val)
        self.min = self.min if val > self.min else val
        self.minStack.append(self.min)

    def pop(self) -> None:
        num = self.minStack.pop()
        self.stack.pop()
        if not self.minStack : 
            self.min = 2**31
        if num == self.min : 
            self.min = self.minStack[-1]
            

    def top(self) -> int:
        return self.stack[-1]

    def getMin(self) -> int:
        return self.minStack[-1]

Goooood~~~

'컴퓨터 > 코테' 카테고리의 다른 글

릿코드200 - 섬의 수  (0) 2021.08.09
릿코드62 - Unique paths [dp]  (0) 2021.08.07
릿코드 2 - 두 수 더하기 (리스트)  (0) 2021.08.05
릿코드 20 - 괄호 짝 맞추기  (0) 2021.08.05
릿코드 104 - 트리의 가장 깊은 층  (0) 2021.08.04