본문 바로가기

PROGRAMMING/ALGORITHM

[백준] 1935번 후위 표기식2 JAVA

import javax.management.ObjectName;
import java.io.*;
import java.text.DecimalFormat;
import java.util.*;
import java.util.concurrent.ArrayBlockingQueue;

public class Main {
    public static void main(String args[]) throws IOException, InterruptedException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        int cnt = Integer.parseInt(reader.readLine());
        String[] inputString = reader.readLine().split("");
        int[] number = new int[cnt];
        Stack<Double> stack = new Stack<>();

        for(int i = 0; i < cnt; i++){
            number[i] = Integer.parseInt(reader.readLine());
        }

        for(int i = 0; i < inputString.length; i++){
            int ascii = (int)inputString[i].toCharArray()[0];
            if(ascii > 64 && ascii < 91){
                stack.push((double)number[ascii-65]);
            }else{
                double cal2 = stack.pop();
                double cal1 = stack.pop();
                double result = 0;

                if(inputString[i].equals("*")){
                    result = cal1 * cal2;
                }else if(inputString[i].equals("+")) {
                    result = cal1 + cal2;
                }else if(inputString[i].equals("/")) {
                    result = cal1/cal2;
                }else if(inputString[i].equals("-")) {
                    result = cal1 - cal2;
                }
                stack.push(result);
            }
        }
        DecimalFormat form = new DecimalFormat("#.00");

        while(!stack.isEmpty()) {
            bw.write(form.format(stack.pop()));
        }
        bw.write("\n");

        reader.close();
        bw.flush();
    }
}

 

'PROGRAMMING > ALGORITHM' 카테고리의 다른 글

[백준] 10809번 JAVA  (0) 2021.04.19
[백준] 10808번 JAVA  (0) 2021.04.18
[백준] 17299번 오등큰수 JAVA  (0) 2021.04.13
[백준] 17298번 JAVA  (0) 2021.04.11
[백준] 10799번 JAVA  (0) 2021.04.02