프로그래밍 공부/백준 (C++)

[C++/백준 1918번] 후위 표기식

Rocketbabydolls 2024. 10. 25. 15:02

 

 

#include <iostream>
#include <stack>
using namespace std;



int main()
{


	string input;
	

	cin >> input;

	stack <char> s;
	

	
	for (int i = 0; i < input.length(); i++)
	{ 
		if (input[i] >= 'A' && input[i] <= 'Z')
		{
			cout << input[i];
		}
		else if (input[i] == '(')
		{
			s.push(input[i]);
		}
		else if (input[i] == ')')
		{
			while (1)
			{
				if (s.top() == '(')
				{
					s.pop();
					break;
				}
				else
				{
					cout << s.top();
					s.pop();
				}

			}
		}
		else if(input[i] == '*' || input[i] == '/')
		{
			while(!s.empty() && (s.top() == '*' || s.top() == '/'))
			{
				cout << s.top();
				s.pop();
			}
			s.push(input[i]);
			
		}
		else if (input[i] == '+' || input[i] == '-')
		{
			while(!s.empty() && (s.top() != '('))
			{
				cout << s.top();
				s.pop();
			}
			
			s.push(input[i]);
		}
	}

	while (!s.empty())
	{
		cout << s.top();
		s.pop();
	}


	

	return 0;
}