728x90
[백준] 203 - 자료구조 1 (참고) : 후위 표기식 (1918번 JAVA)
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.EmptyStackException;
import java.util.Stack;
public class Main{
public static void main(String[] args) throws IOException, EmptyStackException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
Stack<Character> stack = new Stack<>();
StringBuilder sb = new StringBuilder();
// 계산식
String str = br.readLine();
for(int i=0; i<str.length(); i++){
// A ~ Z
if( (int)str.charAt(i) >= 65 && (int)str.charAt(i)<=90 ){
sb.append(str.charAt(i));
}
else {
switch (str.charAt(i)) {
case '(':
stack.push(str.charAt(i));
break;
case ')':
char x;
while(true){
x = stack.pop();
if (x == '('){
break;
}
else {
sb.append(x);
}
}
break;
case '+': case '-':
if(!stack.isEmpty()){
while (!stack.isEmpty() && (stack.peek() == '+' || stack.peek() == '-' || stack.peek() == '*' || stack.peek() == '/')){
sb.append(stack.pop());
}
}
stack.push(str.charAt(i));
break;
case '*': case '/':
if(!stack.isEmpty()){
while (!stack.isEmpty() && (stack.peek() == '*' || stack.peek() == '/')){
sb.append(stack.pop());
}
}
stack.push(str.charAt(i));
break;
} // switch
} // else
} // for
while(!stack.isEmpty()){
sb.append(stack.pop());
}
bw.write(sb.toString());
bw.flush();
bw.close();
}
}
728x90
'백준 > 코드 플러스 (알고리즘 기초 - 1)' 카테고리의 다른 글
[백준] 203 - 자료구조 1 (참고) : ROT13 (11655번 JAVA) (0) | 2023.01.07 |
---|---|
[백준] 203 - 자료구조 1 (참고) : 문자열 분석 (10820번 JAVA) (0) | 2023.01.06 |
[백준] 203 - 자료구조 1 (참고) : 후위 표기식2 (1935번 JAVA) (0) | 2023.01.06 |
[백준] 201 - 자료구조 1 (연습) : 오등큰수 (17299번 JAVA) (0) | 2023.01.06 |
[백준] 201 - 자료구조 1 (연습) : 오큰수 (!) (17298번 JAVA) (0) | 2023.01.06 |