CodeWars 예순 번째 문제

Updated:

Reverse polish notation calculator

public double evaluate(String expr) {
		
    if(expr.length() == 0) {
        return 0;
    }

    String[] exprArray = expr.split(" ");

    Stack<Double> stack = new Stack<Double>();

    for(String exp : exprArray) {

        if("+".equals(exp)) {
            stack.push(stack.pop() + stack.pop());
        } else if("-".equals(exp)) {
            stack.push(- stack.pop() + stack.pop());
        } else if("*".equals(exp)) {
            stack.push(stack.pop() * stack.pop());
        } else if("/".equals(exp)) {
            double first = stack.pop();
            double second = stack.pop();
            stack.push(second / first);
        } else {
            stack.push(Double.parseDouble(exp));
        }
    }

    return stack.pop();
}
  • 이번 문제는 1시간 동안 고민했는데 stack을 이용한 문제였다.

  • stack에 대해서는 알고 있었으나 막상 문제로 풀려고 하니까 stack이라는 것을 떠올리기 쉽지 않았다.

  • stack 관련된 문제였다는 것을 알았다면 바로 풀었을 텐데말이다.

  • 이게 수학공식은 알고 있어도 적용못하는 느낌일까?

  • 이번기회에 다시 stack에 대해서 느끼고 간다.