import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
StringBuilder sb = new StringBuilder();
Stack<Character> stack = new Stack<>();
for(int i=0; i<s.length(); i++) {
char c = s.charAt(i);
switch(c) {
case '+':
case '-':
case '*':
case '/':
while(!stack.isEmpty() && priority(c)<=priority(stack.peek())) {
sb.append(String.valueOf(stack.pop()));
}
stack.push(c);
break;
case '(':
stack.push(c);
break;
case ')':
while(stack.peek()!='(') { sb.append(String.valueOf(stack.pop())); }
stack.pop();
break;
default:
sb.append(String.valueOf(c));
}
}
while(!stack.isEmpty()) { sb.append(String.valueOf(stack.pop())); }
System.out.println(sb);
}
public static int priority(char c) {
if(c=='(') { return 1; }
else if(c=='+' || c=='-') { return 2; }
else { return 3; }
}
}
'Problem Solving > BOJ' 카테고리의 다른 글
[Silver 3] 11726번 2×n 타일링 (0) | 2022.03.28 |
---|---|
[Silver 3] 1463번 1로 만들기 (0) | 2022.03.28 |
[Silver 5] 11576번 Base Conversion (0) | 2022.03.25 |
[Silver 5] 11653번 소인수분해 (0) | 2022.03.25 |
[Silver 2] 17103번 골드바흐 파티션 (0) | 2022.03.25 |