코드와이
[BAEKJOON] 1918. 후위 표기식 본문
문제링크
https://www.acmicpc.net/problem/1918
package acmicpc.Gold3;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class 후위_표기식 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
String str = br.readLine();
Stack<Character> stack = new Stack<>();
for(char c : str.toCharArray()) {
if(c >= 'A' && c <= 'Z') {
sb.append(c);
} else if(c == '(') {
stack.add(c);
} else if(c == ')') {
while(!stack.isEmpty()) {
char tmp = stack.pop();
if(tmp == '(') break;
sb.append(tmp);
}
} else {
while(!stack.isEmpty() && checkPrior(c) <= checkPrior(stack.peek())) {
sb.append(stack.pop());
}
stack.add(c);
}
}
while(!stack.isEmpty()) {
sb.append(stack.pop());
}
System.out.println(sb);
}
public static int checkPrior(char c) {
if(c == '*' || c == '/') return 2;
else if(c == '+' || c == '-') return 1;
else return 0;
}
}
'acmicpc' 카테고리의 다른 글
[BAEKJOON] 1300. K번째 수 (0) | 2021.11.06 |
---|---|
[BAEKJOON] 2263. 트리의 순회 (0) | 2021.11.06 |
[BAEKJOON] 1167. 트리의 지름 (0) | 2021.10.18 |
[BAEKJOON] 2665. 미로 만들기 (0) | 2021.10.16 |
[BAEKJOON] 17406. 배열 돌리기4 (0) | 2021.10.16 |