import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
import java.util.Stack;
import java.util.StringTokenizer;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
Map<Character, Integer> map = new HashMap<>();
map.put('*', 3);
map.put('/', 3);
map.put('+', 2);
map.put('-', 2);
map.put('(', 1);
char[] n = br.readLine().toCharArray();
StringBuilder sb = new StringBuilder();
Stack<Character> s = new Stack<>();
for (char c : n) {
if (Character.isAlphabetic(c) || Character.isDigit(c)) {
sb.append(c);
} else if (c == '(') {
s.push(c);
} else if (c == ')') {
char topToken = s.pop();
while (topToken != '(') {
sb.append(topToken);
topToken = s.pop();
}
} else {
while (!s.isEmpty() && map.get(s.peek()) >= map.get(c)) {
sb.append(s.pop());
}
s.push(c);
}
}
while (!s.isEmpty())
sb.append(s.pop());
System.out.println(sb.toString());
br.close();
}
}
참고 : https://runestone.academy/runestone/books/published/pythonds/BasicDS/InfixPrefixandPostfixExpressions.html
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 16916. 부분 문자열 (0) | 2021.11.16 |
---|---|
[백준] 2407. 조합 (0) | 2021.11.14 |
[백준] 18808. 스티커 붙이기 (0) | 2021.11.02 |
[백준] 1629. 곱셈 (0) | 2021.10.27 |
[백준] 5397. 키로거 (0) | 2021.10.27 |
댓글