Skip to content

Commit ecb64b6

Browse files
authored
[20250311] BOJ / G2 / 후위 표기식 / 설진영
1 parent 1dcde56 commit ecb64b6

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
```java
2+
import java.io.*;
3+
import java.util.ArrayDeque;
4+
5+
public class Main {
6+
static ArrayDeque<Character> stack = new ArrayDeque<>();
7+
8+
public static void main(String[] args) throws IOException {
9+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
10+
StringBuilder sb = new StringBuilder();
11+
String userInput = br.readLine();
12+
13+
for (int i = 0; i < userInput.length(); i++) {
14+
char target = userInput.charAt(i);
15+
16+
switch(target) {
17+
case '+':
18+
case '-':
19+
case '*':
20+
case '/':
21+
while (!stack.isEmpty() && priority(stack.peek()) >= priority(target)) {
22+
sb.append(stack.pop());
23+
}
24+
stack.push(target);
25+
break;
26+
case '(':
27+
stack.push(target);
28+
break;
29+
case ')':
30+
while (!stack.isEmpty() && stack.peek() != '(') {
31+
sb.append(stack.pop());
32+
}
33+
stack.pop();
34+
break;
35+
default:
36+
sb.append(target);
37+
}
38+
}
39+
40+
while (!stack.isEmpty()) {
41+
sb.append(stack.pop());
42+
}
43+
44+
System.out.println(sb.toString());
45+
}
46+
47+
public static int priority(char op) {
48+
if (op == '(' || op ==')') return 0;
49+
if (op == '+' || op == '-') return 1;
50+
if (op == '*' || op == '/') return 2;
51+
return -1;
52+
}
53+
}
54+
```

0 commit comments

Comments
 (0)