프로그래밍 공부/백준 (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;
}