[백준 JAVA] 1918번 풀이 - 후위 표기식
by mini_minpackage quiz;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
/**
* 후위 표기식
* 1. 연산자 우선순위로 괄호로 묶는다.
* 2. 괄호 안의 연산자를 괄호의 오른쪽으로 옮긴다.
* 중위 표기식을 후위 표기식으로 고치는 프로그램을 작성하시오.
*
*/
public class _1918 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine(); //A+B*C ----> ABC*+
Stack<Character> op = new Stack<>();
StringBuilder sb = new StringBuilder();
for(int i=0; i<s.length(); i++){
char c = s.charAt(i);
if(c>='A' && c<='Z'){ //피연산자는 그대로 출력
sb.append(c);
} else if(c=='(') {
op.push(c);
} else if(c==')') {
while(!op.isEmpty()){
if(op.peek()=='('){ //(가 나올 때 까지 pop
op.pop();
break;
}
sb.append(op.pop());
}
} else {
while(!op.isEmpty() && priority(op.peek()) >= priority(c)){
sb.append(op.pop());
}
op.push(c);
}
}
while(!op.isEmpty()){
sb.append(op.pop());
}
System.out.println(sb);
}
public static int priority(char t){
if(t =='*' || t =='/') return 2;
else if (t == '(') return 0;
else return 1;
}
}
풀이
후위 표기식 개념 포스팅 참고하기
https://backshren20.tistory.com/666
[자료구조-스택] 후위 표기법이란? (백준 1935번)
💡 👍🏻 후위식은 연산자를 피연산자 뒤에 놓고 표기하는 방법이다. 3 10 * → (피연산자) (피연산자) (연산자) 중위 표기법이란? 숫자와 숫자 사이에 연산자를 넣어서 식을 표현하는 것이다. 피
backshren20.tistory.com
'매일매일 알고리즘 공부' 카테고리의 다른 글
[백준 JAVA] 6588번 풀이 - 골드바흐의 추측 (1) | 2023.11.13 |
---|---|
[백준 JAVA] 문자열 자료구조 문제 (11655, 10820, 10808번) (0) | 2023.11.10 |
[백준 JAVA] 17299번 풀이 - 오등큰수 (오큰수 유형) (0) | 2023.11.07 |
[백준 JAVA] 17298번 풀이 - 오큰수 (인덱스 🥺..) (0) | 2023.11.06 |
[백준 JAVA] 10799번 풀이 - 쇠막대기 (자료구조 점점 능숙해😇) (1) | 2023.10.28 |
블로그의 정보
개발자 미니민의 개발로그
mini_min