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에 대해서 느끼고 간다.