
+와 -만을 이용한 식을 입력받아 괄호를 적절히 넣어 가장 작은 수를 만드는 문제다.
괄호를 적절히 넣는다는 말은 그냥 계산 우선순위를 만들라는 것이고 가장 작은 수를 만들기 위해서는 숫자와 -사이에 괄호가 있다면 수가 -가 되어서 가장 작은 수가 될 것이다.

이 예제를 보면 결국
이러한 식이 되어 결과값이 35가 나오게 된다.
이는 이후 +가 나오면 위 식과 같이 한번에 -를 하게되고 만약 -가 나온다면 한 번 괄호를 닫았다가 다시 괄호를 열게된다. 즉, 이후 어떠한 연산자가 나오든지 상관없이 쭉 -연산만 진행해주면 된다. 따라서 minus에 관한 bool타입 변수를 만들어서 이를 확인하면 될 것 같다.
#include <bits/stdc++.h> #define fastio ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL); #define endl '\n' using namespace std; using ll = long long; using pii = pair<int, int>; int main() { int res = 0; string str, num; bool minus = false; cin >> str; for(int i = 0; i <= str.length(); i++) { if(str[i] == '-' || str[i] == '+' || i == str.length()) { if(minus) res -= stoi(num); else res += stoi(num); num = ""; } else { num += str[i]; } if(str[i] == '-') minus = true; } cout << res << endl; return 0; }

'PS' 카테고리의 다른 글
[BOJ] 25501 재귀의 귀재 0 | 2023.02.13 |
---|---|
[BOJ] 1094 막대기 0 | 2023.02.12 |
[BOJ] 1013 Contact 0 | 2023.02.09 |
[BOJ] 4949 균형잡힌 세상 0 | 2023.01.17 |
[BOJ] 1920 수 찾기 0 | 2023.01.16 |