-
백준 1918번 후위 표기식 문제 스택 활용 풀이 ( Java )Problem Solving/Java 2019. 10. 21. 17:49반응형1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071public class Main {public static int comparison(char ch) {if (ch == '(') return 0;if (ch == '+' || ch == '-') return 1;else return 2;}public static void main(String[] args) throws IOException {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));String input = br.readLine();Stack<Character> stack = new Stack<Character>();// 문자는 그냥 찍고// 기호는 우선순위에 따라 스택에 넣거나 출력for (int i = 0; i < input.length(); i++) {if (input.charAt(i) >= 'A' && input.charAt(i) <= 'Z') {// 문자일 경우bw.write(input.charAt(i));// 그냥 출력} else if (input.charAt(i) == '('){// 여는 괄호일 경우stack.push(input.charAt(i));// 스택에 추가} else if (input.charAt(i) == ')') {// 닫는 괄호일 경우while(!stack.isEmpty()) {// 스택이 빌 때 까지// 여는 괄호를 만나면// 여는 괄홀 없애고break;// 반복 종료}// 스택 상단 값을 출력하는데}}else{// * / + - 일 경우// 스택이 비어 있지 않고 스택 상단 값의 우선순위가 입력 문자보다 크면// 괄호안이 아니고 stack 최상단 값이 * 나 /면// 스택 상단 값 출력}stack.add(input.charAt(i));// 다시 담는다}}while (!stack.isEmpty()) {// 반복 끝났는데 스택이 다 비어있지 않으면// 스택 상단 값 출력}}}
Java의 문법에 생각을 맞추는 거 보다
처음 상상한 방법을 구현하기 위해 Java를 활용하는 게 더 깔끔한 코드를 짤 수 있는 방법 같다
반응형'Problem Solving > Java' 카테고리의 다른 글
백준 10809번 알파벳 찾기 문제 풀이 ( Java ) (0) 2019.10.21 백준 10808번 알파벳 개수 문제 풀이 ( Java ) (0) 2019.10.21 백준 17299번 오등큰수 문제 스택 활용 풀이 ( Java ) (0) 2019.10.21 백준 17298번 오큰수 문제 스택 활용 풀이 ( Java ) (2) 2019.10.20 백준 10799 쇠막대기 문제 풀이 Stack 활용 ( Java ) (0) 2019.10.20