-
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;를 안 해서 틀렸었다... 습관좀 들이자 ㅜㅜ
댓글