Algorithm/문제

39. 후위식 연산(postfix)

챛채 2023. 9. 25. 16:59

숫자 만나면 push()하고 연산자 만나면 pop()

import java.util.*;

public 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(x-48); // '5'-48을 해야 진짜 숫자 5가 나옴 ,'0'아스키코드는 48
            else{
                int rt=stack.pop();
                int lt=stack.pop();
                if(x=='+') stack.push(lt + rt);
                else if(x =='-') stack.push(lt - rt);
                else if(x =='*') stack.push(lt * rt);
                else if(x =='/') stack.push(lt / rt);
            }
        }
        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));
   }
}