File tree Expand file tree Collapse file tree 1 file changed +47
-0
lines changed Expand file tree Collapse file tree 1 file changed +47
-0
lines changed Original file line number Diff line number Diff line change
1
+ /*
2
+ 후위 표기식은 스택하나로 계산이 가능
3
+ */
4
+
5
+ import java .io .*;
6
+ import java .util .*;
7
+
8
+ class Main {
9
+ public static void main (String [] args ) throws Exception {
10
+ BufferedReader br = new BufferedReader (new InputStreamReader (System .in ));
11
+ BufferedWriter bw = new BufferedWriter (new OutputStreamWriter (System .out ));
12
+ int n = Integer .parseInt (br .readLine ());
13
+ String line = br .readLine ();
14
+ Stack <Double > stack = new Stack <>();
15
+
16
+ int [] numbers = new int [n ];
17
+
18
+ for (int i = 0 ; i < n ; i ++) {
19
+ numbers [i ] = Integer .parseInt (br .readLine ());
20
+ }
21
+
22
+ for (char input : line .toCharArray ()) {
23
+ if (input >= 65 && input <= 90 ) {
24
+ stack .push ((double ) numbers [input - 'A' ]);
25
+ } else {
26
+ stack .push (calculate (stack .pop (), stack .pop (), input ));
27
+ }
28
+ }
29
+
30
+ bw .write (String .format ("%.2f" , stack .pop ()));
31
+ bw .flush ();
32
+ bw .close ();
33
+ }
34
+
35
+ public static double calculate (double op2 , double op1 , char operator ) {
36
+ if (operator == '+' ) {
37
+ return op1 + op2 ;
38
+ }
39
+ if (operator == '-' ) {
40
+ return op1 - op2 ;
41
+ }
42
+ if (operator == '/' ) {
43
+ return op1 / op2 ;
44
+ }
45
+ return op1 * op2 ;
46
+ }
47
+ }
You can’t perform that action at this time.
0 commit comments