백준

백준 1935 - Java

으엉어엉 2024. 9. 19. 17:05
728x90

import java.util.Scanner;
import java.util.Stack;

public class PostOrder2 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int N = sc.nextInt();
        String s = sc.next();
        double[] values = new double[26];

        for (int i = 0; i < N; i++) {
            values[i] = sc.nextDouble();
        }

        Stack<Double> stack = new Stack<>();  // 후위 표기식 계산을 위한 스택

        // 후위 표기식을 한 글자씩 처리
        for (char c : s.toCharArray()) {
            if (c >= 'A' && c <= 'Z') {
                // 피연산자일 경우: 해당하는 값을 스택에 push
                stack.push(values[c - 'A']);
            } else {
                // 연산자일 경우: 스택에서 두 값을 pop하여 연산 수행
                double b = stack.pop();
                double a = stack.pop();

                switch (c) {
                    case '+': stack.push(a + b); break;
                    case '-': stack.push(a - b); break;
                    case '*': stack.push(a * b); break;
                    case '/': stack.push(a / b); break;
                }
            }
        }

        System.out.printf("%.2f", stack.pop());
    }
}
728x90

'백준' 카테고리의 다른 글

백준 10808 - Java  (0) 2024.09.21
백준 1918 - Java  (0) 2024.09.21
백준 17299 - Java  (0) 2024.09.19
백준 17298 - Java  (1) 2024.09.17
백준 10799 - Java  (0) 2024.09.15