ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 1222.계산기1
    알고리즘/SW Expert Academy 2020. 3. 23. 21:59

    이번문제는 후위계산식으로 만들어서 계산하는 문제이다.

    그렇게 어려운 난이도는 아니였다. 후위계산법을 제대로 이해하고 문제를 풀면된다.

    연산자가 '+' 만 주어졌기 때문에 예외처리할게 많지 않았다.

    아마 문제에 숫자가 붙은걸로봐서 앞으로 연산자들이 추가될 것 같은 예감이 든다ㅋㅋㅋ

    허접한 코드로 일단 푸는 것에 의의를 두었다. 

     

    < Code 설명 >

    #include <iostream>
    #include <stack>
    #include <queue>
    #include <string.h>
    
    
    using namespace std;
    
    int main()
    {
        int n;
        for(int k=1; k<=10; k++){
            cin >> n;
            string str;
            cin >> str;
            stack <char>s1;
            queue<char>s2;
            char v;
            for(int i=0; i<n; i++){
                if(str[i]=='+'){
                    if(!s1.empty()){
                        if(!memcmp(&s1.top(),&str[i],1)){
                            s2.push(v);
                            s1.pop();
                        }
                    }
                    s1.push(str[i]);
                    v = s1.top();
                }
                else
                    s2.push(str[i]);
                if(i==n-1){
                    s2.push(s1.top());
                    s1.pop();
                }
            }
            int ans=s2.front()-48, a=0;
            s2.pop();
            while(!s2.empty()){
                if(s2.front()=='+'){
                    ans+=a;
                    s2.pop();
                }
                else {
                    a=s2.front()-48;
                    s2.pop();
                }
            }
            cout << "#"<< k << " " << ans << endl;
        }
        return 0;
    }
    

    -> 풀긴풀었는데 뭔가 더러운 느낌.. ㅋㅋㅋ

    앞으로 예상했던 예외처리가 늘어날 때 깔끔하게 짜야겠다ㅎㅎ

    반응형

    '알고리즘 > SW Expert Academy' 카테고리의 다른 글

    1226.미로1 & 1227.미로2  (0) 2020.03.26
    1225. 암호생성기  (0) 2020.03.24
    1224.계산기3  (0) 2020.03.24
    1223.계산기2  (0) 2020.03.23
    1218. 괄호 짝짓기 풀이  (0) 2020.03.04

    댓글

Designed by Tistory.