티스토리 뷰

백준

백준 소스코드 [C++] 1935 후위 표기식 2

Hani_Levenshtein 2020. 8. 19. 00:04

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

 

1935번: 후위 표기식2

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

www.acmicpc.net

백준 소스코드 [C++] 1935 후위 표기식 2

#include <iostream>
#include <stack>
#include <string>

using namespace std;
int main() {
	string xx;
	int n;
	cin >> n;
	stack<double> ss;
	double x, y;
	double* arr = new double[n];
	cin >> xx;
	for (int i = 0;i < n;i++) cin >> arr[i];
	for (int i = 0;i < (int)xx.length();i++) {
		if ('A' <= xx[i] && xx[i] <= 'Z') {
			ss.push(arr[xx[i] - 'A']);
		}
		else if (xx[i] == '*') {
			x = ss.top();
			ss.pop();
			y = ss.top();
			ss.pop();
			ss.push(y * x);
		}
		else if (xx[i] == '+') {
			x = ss.top();
			ss.pop();
			y = ss.top();
			ss.pop();
			ss.push(y + x);
		}
		else if (xx[i] == '-') {
			x = ss.top();
			ss.pop();
			y = ss.top();
			ss.pop();
			ss.push(y - x);
		}
		else if (xx[i] == '/') {
			x = ss.top();
			ss.pop();
			y = ss.top();
			ss.pop();
			ss.push(y / x);
		}
	}
	cout << fixed;
	cout.precision(2);
	cout << ss.top();




	return 0;
}
댓글