백준 1935 - 후위 표기식2

황재진·2024년 6월 10일

백준

목록 보기
34/54

후위표기법(postfix notation)에 대해 이해하고 있어야 하는 문제입니다.

이 링크에 들어가시면 후위표기법에 대해 이해하실 수 있습니다.

#include <iostream>
#include <stack>

int main()
{
	int n;
	std::string postfix;
	std::stack<double> stack;

	std::cin >> n;
	std::cin >> postfix;

	int* nums = new int[n];

	for (int i = 0; i < n; i++)
		std::cin >> nums[i];

	for (const char c : postfix)
	{
		if (c >= 'A' && c <= 'Z')
			stack.push(nums[c - 65]);
		else
		{
			if (!stack.empty()) // 없어도됨
			{
				double firstNum = stack.top();
				stack.pop();
				double secondNum = stack.top();
				stack.pop();

				switch (c)
				{
				case '+':
					stack.push(secondNum + firstNum);
					break;
				case '-':
					stack.push(secondNum - firstNum);
					break;
				case '*':
					stack.push(secondNum * firstNum);
					break;
				case '/':
					stack.push(secondNum / firstNum);
					break;
				default:
					break;
				}
			}
		}
	}

	printf("%.2f", stack.top());

	return 0;
}
profile
프로그래밍, 쉐이더 등 이것저것 다해보는 게임 개발자입니다

0개의 댓글