Skip to content

Commit 8d3dcef

Browse files
authored
[백준 1935] 후위 표기식2 - 자료구조
1 parent d3c7d5b commit 8d3dcef

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

hoseok/week02/Boj1935.java

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
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+
}

0 commit comments

Comments
 (0)