import java.util.*;
class Main {
public int solution(String str) {
int answer = 0;
Stack<Integer> stack = new Stack<>();
for(char x : str.toCharArray()){
if(Character.isDigit(x))stack.push(Integer.parseInt(Character.toString(x)));
else {
int a = stack.pop();
int b = stack.pop();
if(x == '+') stack.push(a+b);
else if(x == '-') stack.push(b-a);
else if(x == '*') stack.push(a*b);
else if(x == '/') stack.push(b/a);
}
}
answer = stack.get(0);
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner kb = new Scanner(System.in);
String str = kb.next();
System.out.println(T.solution(str));
}
}
후위식연산을 어떻게 표현하는지 이해하는게 좀 어려웠다...
숫자는 모두 stack에 넣고
연산자를 만나면 숫자를 두 개 pop시켜서
나중에나온값(b) | 연산자(+,-,*,/) | 먼저 나온값(a)
식을 만들어 계산을하면된다.
그 계산결과는 stack에 push돼야한다.
이 과정을 쭉 거치면 최종적으로 stack에는 최종 연산결과값만이 남는다.
숫자판별 Character.isdigit 메소드를 잊지말자!