4주차-3)
잃어버린 괄호
세준이는 양수와 +, -, 그리고 괄호를 가지고 식을 만들었다. 그리고 나서 세준이는 괄호를 모두 지웠다.
그리고 나서 세준이는 괄호를 적절히 쳐서 이 식의 값을 최소로 만들려고 한다.
expression에 식을 한줄로 입력받는다.
2+3-4-5 => 2+3-4-5
2+3-4+5 => 2+3-(4+5)
2-3+4+5 => 2-(3+4+5)
2-3+4-5 => 2-(3+4)-(5)
-가 올 경우 뒤에 다른 - 가 나올 때까지 나오는 숫자를 괄호로 묶어준다.
즉 -가 나온다면 뒤에 나오는 숫자는 모두 뺴주는 식이 결과가 최소가 되는 식이된다.
따라서 minus 변수를 부울형 변수로 선언해주고 ' - ' 연산자가 등장했다면 그 bool값을 true로 변경해준 뒤 그 뒤 모든 숫자를 뺴주는 연산을 시행하였다.
#include<iostream>
#include<string>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
string expression;
cin >> expression;
int result = 0;
string num;
bool minus = false;
for (int i = 0;i < expression.size()+1;i++) {
if (expression[i] == '+' || expression[i] == '-' || i == expression.size()) {
if (minus) {
result -= stoi(num);
num = "";
}
else {
result += stoi(num);
num = "";
}
}
else {
num += expression[i];
}
if (expression[i] == '-') {
minus = true;
}
}
cout << result;
return 0;
}