일단 코드 먼저 ...
import java.util.Scanner;
import java.util.Stack;
public class Main {
// 여기서 먼저 pop된 숫자가 num2라는 점을 주의해야 함!
public static int calculate(int num2, int num1, char op){
switch (op){
case '+':
return num1 + num2;
case '-':
return num1 - num2;
case '*':
return num1 * num2;
case '/':
return num1 / num2;
}
return 0;
}
public static int solution(int[] args){
Stack<Integer> stack = new Stack<>();
Stack<Integer> tmpStack = new Stack<>();
//1. 일단 역순으로 정렬한 char 배열의 각 char를 Stack에 넣는다
for(int n : args){
stack.push(n);
}
//2. 후위연산자 계산 법대로 stack에 넣고 빼내기를 반복
while(!stack.isEmpty()){
Integer pop = stack.pop();
if(pop>=1 && pop<=9){
tmpStack.push(pop);
} else{
int tmpResult = calculate(tmpStack.pop(), tmpStack.pop(), (char)(pop + '0'));
tmpStack.push(tmpResult);
}
}
return tmpStack.pop();
}
public static void main(String[] args){
//0. Scanner 준비
Scanner sc = new Scanner(System.in);
//1. 입력
String str = sc.nextLine();
char[] charArr = new StringBuilder(str).reverse().toString().toCharArray();
int[] arr = new int[charArr.length];
for(int i=0; i<charArr.length; i++){
arr[i] = charArr[i] - '0';
}
//2. solution() 호출 후 결과 반환
int result = solution(arr);
//3. 결과 출력
System.out.println(result);
}
}