[백준] PS/Java [실랜디]

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

SH3542 2025. 3. 6. 18:10

https://www.acmicpc.net/problem/1935

 

알파벳에 숫자를 맵핑하고 후위 표기식을 구현하는 문제

 

stack은 empty 체크하지 않아도 됨이 보장된다.

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
import java.util.Stack;

class Main {

  public static void main(String[] args) throws IOException {

    Map<Character, Integer> dic = new HashMap<>();
    Stack<Double> s = new Stack<>();

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    int N = Integer.parseInt(br.readLine());
    String input = br.readLine();

    char key = 'A';
    for (int i = 0; i < N; i++) {
      dic.put(key++, Integer.parseInt(br.readLine()));
    }

    for (int i = 0; i < input.length(); i++) {

      char c = input.charAt(i);

      if (Character.isAlphabetic(c)) {
        s.add(Double.valueOf(dic.get(c)));
      } else {
        double n2 = s.pop();
        double n1 = s.pop();

        if (c == '*') {
          s.add(n1 * n2);
        } else if (c == '+') {
          s.add(n1 + n2);
        } else if (c == '-') {
          s.add(n1 - n2);
        } else {
          // 피연산자에 대응 하는 값은 100보다 작거나 같은 자연수이다. => divide by zero x
          s.add(n1 / n2);
        }
      }
    }

    System.out.println(String.format("%.2f", s.pop()));
  }
}

'[백준] PS > Java [실랜디]' 카테고리의 다른 글

[백준 2012] 등수 매기기 - JAVA  (1) 2025.03.07
[백준 1940] 주몽 - JAVA  (1) 2025.03.06
[백준 1913] 달팽이 - JAVA  (0) 2025.03.06
[백준 1904] 01타일 - JAVA  (0) 2025.03.06
[백준 1895] 필터 - JAVA  (0) 2025.03.06