📑 문제
이 문제는 특정한 조건을 만족하는 스택을 설계하고 구현하는 것입니다.
구체적으로, 다음과 같은 기능들을 상수 시간 내에 수행할 수 있는 스택을 구현해야 합니다:
MinStack() : 스택 객체를 초기화합니다.
void push(int val) : 원소 val를 스택에 push합니다.
void pop() : 스택의 맨 위에 있는 원소를 제거합니다.
int top() : 스택의 맨 위에 있는 원소를 반환합니다.
int getMin() : 스택에서 가장 작은 원소를 찾아 반환합니다.
문제 접근 방식
스택과 min 변수를 설정하여, 스택을 설계하고 구현했습니다.
CODE
class MinStack {
Stack<Integer> stack = new Stack<>();
int min = Integer.MAX_VALUE;
public void push(int val) {
if (val <= min) {
stack.push(min);
min = val;
}
stack.push(val);
}
public void pop() {
if (stack.isEmpty()) return;
if (stack.pop() == min) {
min = stack.pop();
}
}
public int top() {
return stack.peek();
}
public int getMin() {
return min;
}
}