쌓고 쌓다
[백준] 후위 표기식 1918번 C++ 풀이 본문
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();
}
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 사이클 게임 20040번 C++ 풀이 (0) | 2022.04.02 |
---|---|
[백준] 후위 표기식2 1935번 C++ 풀이 (0) | 2022.03.31 |
[백준] 오등큰수 17299번 C++ 풀이 (0) | 2022.03.27 |
[백준] 외계인의 기타 연주 2841번 C++풀이 (0) | 2022.03.23 |
[백준] 퇴사 2 15486번 C++ 풀이 (0) | 2022.03.10 |
Comments