PS

BOJ 1935 - 후위 표기식 2

728x90

www.acmicpc.net/problem/1935

 

1935번: 후위 표기식2

첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이

www.acmicpc.net

 

- C++

#include <iostream>
#include <stack>
#include <string>
 
using namespace std;
 
stack<double> st;
string input;
double result;
double a_idx, b_idx;
int arr[27];
int N;
 
int main() {
    cin.tie(0);
    ios_base::sync_with_stdio(0);
 
    cin >> N;
    cin >> input;
 
    for (int i = 0; i < N; i++cin >> arr[i];
 
    for (int i = 0; i < input.length(); i++) {
        if ('A' <= input[i] && input[i] <= 'Z') {
            int num = input[i] - 'A';
            st.push(arr[num]);
        } else {
            b_idx = st.top();
            st.pop();
            a_idx = st.top();
            st.pop();
            if (input[i] == '*')
                st.push(a_idx * b_idx);
            else if (input[i] == '/')
                st.push(a_idx / b_idx);
            else if (input[i] == '+')
                st.push(a_idx + b_idx);
            else if (input[i] == '-')
                st.push(a_idx - b_idx);
        }
    }
 
    cout << fixed;
    cout.precision(2);
    cout << st.top();
 
    return 0;
}
cs

 

 

728x90

'PS' 카테고리의 다른 글

BOJ 14719 - 빗물  (0) 2020.10.26
BOJ 1725 - 히스토그램  (0) 2020.10.26
BOJ 1238 - 파티  (0) 2020.10.02
BOJ 1929 - 소수 구하기  (0) 2020.09.30
BOJ 2512 - 예산  (0) 2020.09.28