본문 바로가기
알고리즘 이전/스택, 큐

후위식 연산

by hoshi03 2023. 8. 10.

오늘 배운거

Character.isDigit() <- 숫자인지 판별하는 메서드

Character.getNumericValue(num)나

char - 48

 

후위식 연산 = 연산자를 뒤로 뺀 연산

352+*9- 를 후위식 연산하면 3*(5+2)-9로 12가된다

 

후위식 연산을 하는 방법

 

 

스택에 자연수면 값을 저장, 연산자를 만나면

먼저 뺀 것을 rt, 나중에 뺀 것을 lt에 넣어서 연산

마지막에 get(0)로 스택에 있는 걸 리턴

 

import java.util.*;
public class Main {
    public int Solution(String s1){
        Stack<Integer> st = new Stack<>();
        for(char x : s1.toCharArray()){
            //char를 int로 변환
            if(Character.isDigit(x)) st.push(x-48);
            else{
                int rt = st.pop();
                int lt = st.pop();
                if(x == '+') st.push(lt +rt);
                if(x == '-') st.push(lt-rt);
                if(x == '*') st.push(lt * rt);
                if(x == '/') st.push(lt/rt);
            }
        }

        return st.pop();
    }

    public static void main(String[] args) {
        Main T = new Main();
        Scanner in = new Scanner(System.in);
        String s = in.next();

        System.out.println(T.Solution(s));
    }
}

 

 

 

'알고리즘 이전 > 스택, 큐' 카테고리의 다른 글

교육과정 설계  (0) 2023.08.12
공주 구하기  (0) 2023.08.11
크레인 인형뽑기  (0) 2023.08.10
괄호문자제거  (0) 2023.08.08
올바른 괄호  (0) 2023.08.08