후위 표기식 2

남태우·2021년 1월 17일
0

문제

https://www.acmicpc.net/problem/1935

추상화

주어진 후위표기식을 어떻게하면 완벽한 계산이 나올까?
후위표기식이라는 것을 먼저 이해하면 손 쉽게 해결이 가능하다.
후위 표기식은 링크을 통해 간단하게 정리를 했으니 참고하면 좋을듯 하다.

코드

#include<iostream>
#include<vector>
#include<stack>
using namespace std;
vector<int> vec;
stack<double> stk;

void calc(double num1, double num2, char oper) {
    if(oper == '+') stk.push(num2+num1);
    else if(oper =='-') stk.push(num2-num1);
    else if(oper =='*') stk.push(num2*num1);
    else stk.push(num2/num1);
}

int main() {
    int N; cin>>N;
    string s; cin>>s;

    for(int i=0; i<N; i++) {
        double num; cin>>num;
        vec.push_back(num);
    }
    for(int i=0; i<s.size(); i++) {
        if(s[i]>='A' && s[i]<='Z') { // 숫자
            stk.push(vec[s[i]-'A']);
        }
        else { // 연산자
            double num1 = stk.top(); stk.pop();
            double num2 = stk.top(); stk.pop();
            calc(num1, num2, s[i]);
        }
    }
    cout<<fixed;
    cout.precision(2);
    cout<<stk.top();
    return 0;
}
profile
brand-new

0개의 댓글