https://leetcode.com/problems/evaluate-reverse-polish-notation/description/

코드설명

스택(Stack) + 후위표기법(polish-notation)을 활용합니다.

 

후위표기법대로, 연산자를 만날경우 스택의 가장 최상단 숫자 2개를 pop한뒤, 연산을 합니다.

코드

class Solution {
    public int evalRPN(String[] tokens) {
        Stack<Integer> st = new Stack<>();
        for(String v : tokens){
            if(v.equals("+")){
                int num1 = st.pop();
                int num2 = st.pop();
                st.push(num1 + num2);
            }else if(v.equals("-")){
                int num1 = st.pop();
                int num2 = st.pop();
                st.push(num2 - num1);
            }else if(v.equals("*")){
                int num1 = st.pop();
                int num2 = st.pop();
                st.push(num1 * num2);
            }else if(v.equals("/")){
                int num1 = st.pop();
                int num2 = st.pop();
                st.push(num2 / num1);
            }else {
                st.push(Integer.parseInt(v));
            }
        }
        // System.out.println(st.pop());
        return st.pop();
    }
}

+ Recent posts