Loading [MathJax]/jax/output/CommonHTML/jax.js

 

 +와 -만을 이용한 식을 입력받아 괄호를 적절히 넣어 가장 작은 수를 만드는 문제다.

 

 괄호를 적절히 넣는다는 말은 그냥 계산 우선순위를 만들라는 것이고 가장 작은 수를 만들기 위해서는 숫자와 -사이에 괄호가 있다면 수가 -가 되어서 가장 작은 수가 될 것이다.

 

이 예제를 보면 결국

55(50+40)

이러한 식이 되어 결과값이 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

+ Recent posts