728x90
이 문제는 주어진 식에서 괄호를 적당히 쳐서 결과를 "최솟값"으로 만드는 것이다.
최솟값을 만드는 방법은 마이너스(-)가 한 번 나오면, 그 이후의 값을 모두 빼버리면 된다.
마이너스(-)가 한 번 나왔으면 isMinus를 true로 바꾸어주고 num에 저장된 숫자를 빼준다.
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main() {
string S;
cin >> S;
int ans = 0;
string num;
bool isMinus = false;
for (int i = 0; i <= S.size(); i++) {
if (S[i] == '-' || S[i] == '+' || i == S.size()) {
if (isMinus) {
ans -= stoi(num);
num = "";
}
else {
ans += stoi(num);
num = "";
}
}
else {
num += S[i];
}
if (S[i] == '-') isMinus = true;
}
cout << ans;
}
728x90
'PS > BOJ' 카테고리의 다른 글
[C++] 백준 1037 : 약수 (0) | 2024.02.23 |
---|---|
[C++] 백준 13305 : 주유소 (0) | 2024.02.21 |
[C++] 백준 1026 : 보물 (0) | 2024.02.20 |
[C++] 백준 11047 : 동전 0 (0) | 2024.02.19 |
[C++] 백준 1463 : 1로 만들기 (0) | 2024.02.18 |