BOJ 1541:紛失した括弧-C++


失われたかっこ



コード#コード#

#include <string>
#include <vector>
#include <iostream>
#include <cmath>
#include <map>
#include <algorithm>
#include <sstream>
using namespace std;

int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);

    string str;
    cin >> str;
    stringstream ss(str);
    vector<string> v;
    int n; char c;
    ss >> n;
    int sum = n;
    int save=0;
    while(!ss.eof())
    {
        ss >> c;
        ss >> n;
        if(c == '+'){
            if(save == 0) sum += n;
            else save += n;
        }else if(c == '-'){
            if(save == 0) save += n;
            else {
                sum -= save;
                save = n;
            }
        }
    }
    if(save != 0) sum -= save;
    cout << sum;
    return 0;
}
  • 原理
    :コアは
  • 論理
    1)-表示された場合、次が表示されるまでsaveに数値を蓄積します.
    2)次の-が現れると,スタックされたsaveを除去し,saveを現在読み取っている値
  • に再変換する.