- toc {:toc}
풀이
- isdigit() 함수를 사용하여 문자열로 받은 입력이 숫자인지, 부호인지를 판별한다.
55-50+40 가 입력인 경우, 55-(50+40)와 같이 -가 나왔을 때, 뒤에 있는 +들을 괄호로 묶어 -로 만들어주면 된다. 이는 즉, -가 나온 경우 뒤에 나오는 모든 숫자들을 빼주면 되고, -가 나오지 않은 경우에는 전부 더해주면 된다.
55-50+40+30+20+10 이라면 55-(50+40+30+20+10) 이므로 전부 빼주면 된다.
55-(50+40+30)-(20+10) 이라면 55-(50+40+30)-(20+10) 이므로 중간에 -가 들어가도 -가 일단 한 번 들어가 있다면 뒷 숫자는 전부 빼주면 된다.
#include <bits/stdc++.h>
using namespace std;
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
string input, num;
cin >> input;
int start = 0, temp=0, idx = 0, is_minus=0, res=0;
// - +++의 경우, -가 연속되는 경우,
for(int i=0; i<input.length(); i++){
if(isdigit(input[i])){
temp = temp*10 + (input[i]-48);
}
else{
if(is_minus==1){
res -= temp;
}
else{
if(input[i] == '-'){
is_minus = 1;
res += temp;
}
else{
res += temp;
}
}
temp = 0;
}
}
if(is_minus) res -= temp;
else res += temp;
cout << res << '\n';
return 0;
}