알고리즘/백준
[백준] 후위 표기식 1918번 C++ 풀이
승민아
2022. 3. 29. 18:45
https://www.acmicpc.net/problem/1918
후위 표기식으로 바꾸는 방법은 저번에 작성했었다. 저것을 참고...
설명 -> https://non-stop.tistory.com/91
전체 코드
#include <iostream>
#include <stack>
using namespace std;
string str;
int prec(char ch)
{
switch (ch) {
case '+': case '-':
return 1;
case '*': case '/':
return 2;
case '(':
return 0;
}
}
void solve()
{
stack<char> s;
int idx = 0;
while (idx < str.length())
{
char ch = str[idx];
if (ch >= 'A' && ch <= 'Z')
cout << ch;
else if (ch == '(')
s.push('(');
else if (ch == ')')
{
while (s.top() != '(')
{
cout << s.top();
s.pop();
}
s.pop();
}
else
{
while (!s.empty() && prec(ch) <= prec(s.top()) )
{
cout << s.top();
s.pop();
}
s.push(ch);
}
idx++;
}
while (!s.empty())
{
cout << s.top();
s.pop();
}
}
int main(void)
{
cin >> str;
solve();
}