getMin() 메서드가 있는 MinStack 구현하기
배열로 일반 stack 구현
minStack도 같이 생성해서 insert시 작은 값이 제일 위로 쌓이도록 구현
getMin() 메서드에서는 minStack의 마지막 값 return
값(val)이 들어오면 minsStack이 비어있지 않은지 확인한다.
값과 minStack의 마지막 값을 비교해서 더 작은 값을 val에 할당한다.
minStack에 추가한다.
class MinStack:
def __init__(self):
self.stack = []
self.minStack = []
def push(self, val: int) -> None:
self.stack.append(val)
if self.minStack:
val = min(self.minStack[-1], val)
self.minStack.append(val)
def pop(self) -> None:
self.stack.pop()
self.minStack.pop()
def top(self) -> int:
return self.stack[-1]
def getMin(self) -> int:
return self.minStack[-1]