1918. 후위 표기식 (Java)

2024. 1. 1. 23:26·Algorithm & Data Structures/BOJ

스택과 

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
'Algorithm & Data Structures/BOJ' 카테고리의 다른 글
  • 12015. 가장 증가하는 부분수열 2 (Java)
  • 1865. 웜홀 (Java)
  • 1991. 트리 순회 (Java)
  • 2096. 내려가기 (Java)
Geisha
Geisha
개발 일기
  • Geisha
    Geisha
    Geisha
  • 전체
    오늘
    어제
    • 분류 전체보기 (326)
      • Algorithm & Data Structures (246)
        • BOJ (104)
        • SWEA (1)
        • Programers (137)
        • Data Structures (3)
      • DB (27)
        • SQL (21)
        • RDBMS (2)
      • Java (1)
        • Class (1)
      • Spring (5)
        • Spring MVC (1)
        • Annotations (1)
      • CS (36)
        • 운영체제 (13)
        • 네트워크 (5)
      • Tool (6)
        • Git (5)
        • AWS (1)
      • Project (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    경로압축
    골드
    투포인터
    binarySearch
    후위순회
    baekjoon
    PriorityQueue
    Stack
    유니온파인드
    dp
    algorithm
    백트래킹
    dfs
    programmers
    다익스트라
    DynamicProgramming
    BFS
    백준
    알고리즘
    동적계획법
    스택
    Dijkstra
    unionfind
    전위순회
    이분탐색
    프로그래머스
    구현
    SQL
    Java
    Union-Find
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
Geisha
1918. 후위 표기식 (Java)
상단으로

티스토리툴바