

스택과
priority 함수를 통해
연산자의 우선순위를 판단하고 출력한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class Main {
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> st = new Stack<>();
for(int i = 0 ; i < str.length(); i++){
char now = str.charAt(i);
switch (now){
case '+' :
case '-' :
case '*' :
case '/' :
while(!st.isEmpty() && priority(st.peek()) >= priority(now)){
sb.append(st.pop());
}
st.add(now);
break;
case '(':
st.add(now);
break;
case ')':
while(!st.isEmpty() && st.peek() != '('){
sb.append(st.pop());
}
st.pop();
break;
default:
sb.append(now);
}
}
while(!st.isEmpty()){
sb.append(st.pop());
}
System.out.println(sb.toString());
}
public static int priority(char operator){
if(operator=='(' || operator==')'){
return 0;
} else if (operator == '+' || operator == '-') {
return 1;
} else if (operator == '*' || operator == '/') {
return 2;
}
return -1;
}
}
'Algorithm & Data Structures > BOJ' 카테고리의 다른 글
12015. 가장 증가하는 부분수열 2 (Java) (0) | 2024.01.10 |
---|---|
1865. 웜홀 (Java) (1) | 2024.01.02 |
1991. 트리 순회 (Java) (0) | 2023.12.24 |
2096. 내려가기 (Java) (0) | 2023.12.18 |
2448. 별찍기 - 11 (Java) (0) | 2023.12.13 |