코테/백준

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

imname1am 2024. 9. 8. 23:59
반응형

📖 문제

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

 

 

 

💡  풀이 방식

• 스택

Double형을 저장하는 스택을 생성한다.

 

명령어를 순회하며 피연산자(알파벳에 해당하는 숫자)는 스택에 넣고 , 연산자가 나오면 스택에서 꺼내고 연산한 결과를 스택에 다시 넣는다.

 

 

 

🔺 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import java.util.*;
import java.io.*;
 
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        int N = Integer.parseInt(br.readLine());
        String str = br.readLine();
        
        double[] alphabet = new double[N];
        for(int i = 0 ; i < N ; i++) {
            alphabet[i] = Double.parseDouble(br.readLine());
        }
        
        Stack<Double> stack = new Stack<>();
        double result = 0;
        
        for(int i = 0 ; i < str.length() ; i++) {
            if('A' <= str.charAt(i) && str.charAt(i) <= 'Z') {
                stack.push(alphabet[str.charAt(i) - 'A']);
            }
            else {
                double n1 = stack.pop();
                double n2 = stack.pop();
                double n3 = 0.0;
                
                switch(str.charAt(i)) {
                    case '+' :
                        n3 = n2 + n1;
                        break;
                    case '-' :
                        n3 = n2 - n1;
                        break;
                    case '*' :
                        n3 = n2 * n1;
                        break;
                    case '/' :
                        n3 = n2 / n1;
                        break;
                }
                stack.push(n3);
            }
        }
        
        System.out.printf("%.2f", stack.pop());
    }
}
cs

 

 


💦 어려웠던 점

- 오랜만에 후위 표기식 문제 풀려니가 잠깐 헷갈렸다... 스택 활용하는 아이디어는 그래도 10분? 걸려 생각했다..

 

 

🧐 새로 알게 된 내용

X

 

 

1회독 2회독 3회독 4회독 5회독
V        

(참고)

 

[BOJ] 1935 - 후위 표기식2 JAVA

www.acmicpc.net/problem/1935 1935번: 후위 표기식2 첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서

codeung.tistory.com

 

반응형