[BOJ 1918] 후위 표기식
🔗Link
💡Idea
스택 하나 둬서, 숫자면 스택에 넣고, 연산 기호면 스택에 있는 것을 적당히 빼서 정답 문자열에 넣어주면 된다.
🔑Code
#include <bits/stdc++.h>
using namespace std;
string answer;
stack<char> S;
int main(void){
ios_base::sync_with_stdio(0);
cin.tie(0);
char c;
while(cin >> c){
switch (c){
case '+':
case '-':
while(!S.empty() && S.top()!='('){
answer += S.top();
S.pop();
}
S.emplace(c);
break;
case '*':
case '/':
while(!S.empty() && S.top()!='(' && S.top()!='+' && S.top()!='-'){
answer += S.top();
S.pop();
}
S.emplace(c);
break;
case '(':
S.emplace(c);
break;
case ')':
while(!S.empty() && S.top()!='('){
answer += S.top();
S.pop();
}
S.pop();
break;
default:
S.emplace(c);
break;
}
}
while(!S.empty()){
answer += S.top();
S.pop();
}
cout << answer;
return 0;
}