https://www.acmicpc.net/problem/1541
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string>
using namespace std;
int main() {
string s;
cin >> s;
string number;
bool Minus = false;
int result = 0;
for (int i = 0; i <= s.size(); i++) {
if (s[i] == '-' || s[i] == '+' || i == s.size()) {
if (Minus) {
result -= stoi(number);
number = "";
}
else {
result += stoi(number);
number = "";
}
}
else {
number += s[i];
}
if (s[i] == '-') {
Minus = true;
}
}
cout << result;
return 0;
}
문제 의도는 괄호를 쳐서 최소값을 만들어내는 것인데,
예를 들어 55-50+40이라면 55-(50+40)이 최소값인데 결론적으로, 다음과 같은 연산이 되도록 식의 순서를 수정했다.