문제
풀이

💡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;
}

🗨️ Side Notes

태그:

카테고리: ,

업데이트: