프로그래밍 공부/백준 (C++)
[C++/백준 1935번] 후위 표기식 2
Rocketbabydolls
2024. 10. 24. 14:28
#include <iostream>
#include <stack>
using namespace std;
int arr[26];
int trans(char input)
{
return arr[input - 'A' ];
}
double cal(double a, double b, char oper)
{
switch (oper)
{
case '+':
return a + b;
break;
case '-':
return a - b;
break;
case '*':
return a * b;
break;
case '/':
return a / b;
break;
}
}
int main()
{
int N;
cin >> N;
string input;
cin >> input;
stack <double> s;
for (int i = 0; i < N; i++)
{
int tmp;
cin >> tmp;
arr[i] = tmp;
}
for (int i = 0; i < input.length(); i++)
{
if (input[i] >= 'A' && input[i] <= 'Z')
{
s.push(trans(input[i]));
}
else
{
double p = s.top();
s.pop();
double q = s.top();
s.pop();
s.push(cal(q, p, input[i]));
}
}
cout << fixed;
cout.precision(2);
cout << s.top();
return 0;
}