문제보러가기
#include <iostream>
#include <queue>
#include <vector>
#include <string>
using namespace std;
int main() {
string str;
string firstNumber;
string secondNumber;
int size = 0;
int number = 0;
vector <int> fs;
queue<int> s;
queue<int> S;
getline(cin, str, '\n');
fs.push_back(-1);
for (int i = 0; i < str.length(); i++) {
if (str[i] == '-') {
fs.push_back(i);
}
}
fs.push_back(str.length());
for (int i = 0; i < fs.size() - 1; i++) {// -개수만큼 반복(2를 fs.size()로 바꿈)
for (int j = fs[i] + 1; j < fs[i + 1]; j++) {
if (str[j] == '+') { // (1)
if (s.size() == 0) {// (2)
s.push(stoi(firstNumber));
firstNumber = "";
}
else {// (3)
s.push(stoi(firstNumber) + s.front());
s.pop();
firstNumber = "";
}
}
else {//if (47 < str[j] && str[j] < 58) {//수가 나왔을 때 fn에 계속 더하기 (4)
firstNumber += str[j];
if (str[j + 1] == '\0' || str[j + 1] == '-') { //(5)
if (s.size() == 0) { //(6)
s.push(stoi(firstNumber));
}//
else { //(7)
s.push(stoi(firstNumber) + s.front());
s.pop();
}
}
}
//-가 나오면 끝나니까 수가 들어있는 그대로 끝나면 안돼서 큐에 집어넣는 실행문
}
if (S.size() == 0) {
S.push(s.front());
s.pop();
}
else {
S.push(s.front());
s.pop();
}
firstNumber = "";
}
size = S.size() - 1;
number = S.front();
S.pop();
for (int n = 0; n < size; n++) {
number -= S.front();
if (S.size() - 1 != 0)
S.pop();
}
cout << number;
}