ffinn92 / Keep-at-solve-it

꾸준히 알고리즘 풀기 위한 스터디 저장소입니다.
2 stars 3 forks source link

[220711][반스][인프런](5-4) 후위식 연산 #97

Closed ffinn92 closed 2 years ago

ffinn92 commented 2 years ago

📌 문제

⭐️ 아이디어

🤔 고민한 내용

💪 새롭게 배운 내용

🆘 이해가 어려운 내용

❌ 해결하지 못한 이유

✅ 본인 풀이

🏋️‍♀️ 시도횟수 : -회 | ⏱ 걸린시간 : -ms | 💾 메모리 : -MB

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;

public class If504PostFix {
    public int solution(char[] arr) {
//        Stack<Character> st = new Stack<>();
//
//        st.push(arr[arr.length-2]);
//        st.push(arr[arr.length-1]);
//
//
//        //stack push 부분
//        for (int i = arr.length - 3; i >= 0 ; i--) {
//            if(st.peek() == '+' || st.peek() == '-' || st.peek() == '*' || st.peek() == '/'){
//                st.push()
//            }else{
//
//            }
//
//        }
//
//        //stack에서 pop하여 계산하는부분
//        for (int i = 0; i < ; i++) {
//
//        }
        Stack<Character> st = new Stack<>();
        int right;
        int left;
        char equal;

        for (int i = 0; i < arr.length; i++) {
            if(arr[i] == '+') {
                right = Character.getNumericValue(st.pop());
                left = Character.getNumericValue(st.pop());
                equal = Character.forDigit((left + right), 10);
                st.push(equal);
            }else if(arr[i] == '-'){
                right = Character.getNumericValue(st.pop());
                left = Character.getNumericValue(st.pop());
                equal = Character.forDigit((left - right), 10);
                st.push(equal);
            }else if(arr[i] == '*'){
                right = Character.getNumericValue(st.pop());
                left = Character.getNumericValue(st.pop());
                equal = Character.forDigit((left * right), 10);
                st.push(equal);
            }else if(arr[i] == '/'){
                right = Character.getNumericValue(st.pop());
                left = Character.getNumericValue(st.pop());
                equal = Character.forDigit((left / right), 10);
                st.push(equal);
            }else{
                st.push(arr[i]);
            }
        }

        return Character.getNumericValue(st.pop());

    }

    public static void main(String[] args) throws IOException {
        If504PostFix T = new If504PostFix();
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String input = br.readLine();
        char[] arr = new char[input.length()];

        for (int i = 0; i < input.length(); i++) {
            arr[i] = input.charAt(i);
        }

        System.out.println(T.solution(arr));
    }
}

참고한 자료