ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [LeetCode/JAVA] 155. Min Stack
    ETC/Algorithm 2023. 8. 31. 22:24

    문제

    Stack 자료구조의 push, pop, top을 디자인하고, 최소 요소를 조회를 할 수 있게 하는 문제이다.

    풀이

    기본적으로 JAVA에서 주어지는 자료구조를 사용하여 풀이를 진행하려했다. 하지만 최소값이 문제였다. getMin()을 사용하면 최솟값을 반환하는데, pop() 메소드는 가장 위에 있는 요소를 꺼내버리기 때문에 만약 pop() 한 대상이 최솟값이라면 getMin() 메소드를 할 때 반환할 최솟값을 다시 설정해줘야했다. push를 할 때 최소값을 판단하고 만약 최소값이라면 2번 푸쉬해준다. 아니라면 1번 푸쉬해준다. 이후  pop()을 진행할 때 최솟값과 비교한 뒤, 만약 최소값이라면 한번 더 pop() 메소드를 사용해서 최솟값을 변경해주는 과정을 진행해서 해결하였다.

    코드

    class MinStack {
        Stack<Integer> stack = new Stack<>();
        int minValue = Integer.MAX_VALUE;
    
        public MinStack() {
        }
    
        public void push(int val) {
            if(val <= minValue){
                stack.push(minValue);
                minValue = val;
            }
            stack.push(val);
        }
    
        public void pop() {
            if(stack.pop() == minValue){
                minValue=stack.pop();
            }
        }
    
        public int top() {
            return stack.peek();
        }
    
        public int getMin() {
            return minValue;
        }
    }

    댓글

Designed by black7375.