카테고리 없음
[1918] 백준 : 후위표기식(C++)
데롱디롱
2020. 5. 1. 15:14
728x90
* 생각하지 못한 점
- 연산자 우선순위 : ( → *, / → +, - → )
#include <iostream>
#include <stack>
#include <string>
using namespace std;
int main() {
string s;
cin >> s;
stack<char>st;
string answer = "";
for (int i = 0; i < s.size(); i++)
{
if ('A' <= s[i] && s[i] <= 'Z')
answer += s[i];
else
{
switch (s[i])
{
case '(':
st.push(s[i]);
break;
case '*':
case '/':
while (!st.empty() && (st.top() == '*' || st.top() == '/'))
{
answer += st.top();
st.pop();
}
st.push(s[i]);
break;
case '+':
case '-':
while (!st.empty() && st.top() != '(')
{
answer += st.top();
st.pop();
}
st.push(s[i]);
break;
case ')':
while (!st.empty() && st.top() != '(')
{
answer += st.top();
st.pop();
}
st.pop();
break;
default:
break;
}
}
}
while (!st.empty())
{
answer += st.top();
st.pop();
}
cout << answer;
return 0;
}
- 자꾸 break;를 안 해서 틀렸었다... 습관좀 들이자 ㅜㅜ