반응형
728x170
문자열을 입력받아서 처리하는 것이다.
시간도 널널하다.
https://www.acmicpc.net/problem/1541
#맞는 풀이
#include<iostream>
#include<string>
using namespace std;
string s = "";
bool check = false;
int main() {
cin >> s;
string temp = ""; // 연산을 할 문자열.
int sum = 0;
bool check = false; //-출현체크
bool init = false;
for (char c : s) {
if (c == '+') {
int a = stoi(temp);
if (check) {
sum -= a;
}
else {
sum += a;
}
temp.clear();
}
else if (c == '-') {
int a = stoi(temp);
if (check) {
sum -= a;
}
else {
sum += a;
}
check = true;
temp.clear();
}
else {
temp += c;
}
}
//마지막숫자
int a = stoi(temp);
if (check) {
sum -= a;
}
else {
sum += a;
}
cout << sum << '\n';
}
-가 출현한다면 그 뒤에 것들은 부호에 상관없이 다 sum에서 빼주면 된다.
-가 출현하지 않았다면 그 앞에 것들은 다 더해준다.
숫자를 몇개 넣으면 발견하게 되고
그것을 bool check로 잘 조절하면 된다
temp는 for문 밖에서 선언했으니 쓸 때마다 초기화 시켜주는 것을 잊으면 안된다.
728x90
반응형
그리드형
'문제풀이(Problem Solving)' 카테고리의 다른 글
백준, BOJ, 1037번 C++ [CPP] (0) | 2021.06.10 |
---|---|
백준, BOJ, 13305번 C++ [CPP] (0) | 2021.06.10 |
백준, BOJ, 10844번 C++ [CPP] (0) | 2021.06.09 |
백준, BOJ, 1904번 C++ [CPP] (0) | 2021.06.09 |
백준, BOJ, 14889번 C++ [CPP] (0) | 2021.06.09 |