[JAVA] 37. 후위식 연산(postfix) - stack

2021. 10. 24. 13:58
728x90

설명

후위연산식이 주어지면 연산한 결과를 출력하는 프로그램을 작성하세요.

만약 3*(5+2)-9 을 후위연산식으로 표현하면 352+*9- 로 표현되며 그 결과는 12입니다.

입력

첫 줄에 후위연산식이 주어집니다. 연산식의 길이는 50을 넘지 않습니다.

식은 1~9의 숫자와 +, -, *, / 연산자로만 이루어진다.

출력

연산한 결과를 출력합니다.

예시 입력 1 

352+*9-

예시 출력 1

12

 

 


풀이

 

import java.util.*;
  
public class Main {
  public static void main(String[] args){
    Scanner in=new Scanner(System.in);

    	String str = in.next();
        Stack<Integer> stack = new Stack<>();
        
        for(char ch : str.toCharArray()){
            if(Character.isDigit(ch)){
            // ch를 그대로 넣으면 아스키코드로 들어감
                stack.push(ch -48);
            }else{
                int rt = stack.pop();
                int lt = stack.pop();
                
                if(ch == '+'){
                    stack.push(rt + lt);
                }else if(ch == '-'){
                    stack.push(lt - rt);
                }else if(ch =='*'){
                    stack.push(lt*rt);
                }else if(ch =='/'){
                    stack.push(lt/rt);
                }
            }
        }

        System.out.println(stack.get(0));
  }
}
728x90

BELATED ARTICLES

more