Q. 세준이는 양수와 +, -, 그리고 괄호를 가지고 식을 만들었다. 그리고 나서 세준이는 괄호를 모두 지웠다.
그리고 나서 세준이는 괄호를 적절히 쳐서 이 식의 값을 최소로 만들려고 한다.
괄호를 적절히 쳐서 이 식의 값을 최소로 만드는 프로그램을 작성하시오.
입력.
첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 많이 연속되는 숫자는 없다. 수는 0으로 시작할 수 있다. 입력으로 주어지는 식의 길이는 50보다 작거나 같다.
출력.
첫째 줄에 정답을 출력한다.
※ " 유셩장 " 블로그를 참고했다.
숫자를 임시 저장하기 위한 변수 tmp를 반복문에 들어가기 전에 초기화 해주지 않았다.
그 결과 다른 곳을 삽질하느라 오답이 많았다.
// 취소값을 만들기 위해 문자 - 전까지 숫자들을 더해준다. !
#include <iostream>
#include <cstring>
using namespace std;
int main() {
int i, j, tmp, sum, len, ans;
int num[50] = {0, };
char s[51];
cin >> s;
len = strlen(s);
j = 0;
sum = 0; tmp = 0;
for (i = 0; i < len; i++) {
if (s[i] == '+') {
sum += tmp;
tmp = 0;
} else if (s[i] == '-') {
sum += tmp;
num[j] = sum;
j++;
sum = 0;
tmp = 0;
} else {
tmp *= 10;
tmp += (s[i] - '0');
}
}
sum += tmp;
num[j] = sum;
ans = num[0];
for (i = 1; i < 50; i++) {
ans -= num[i];
}
cout << ans << endl;
return 0;
}
'백준 알고리즘' 카테고리의 다른 글
[python] 10171번 (0) | 2020.12.27 |
---|---|
[Python] 10718번 (0) | 2020.12.27 |
[C언어] 2884번 (0) | 2020.11.10 |
[C언어] 2606번 (0) | 2020.09.18 |
[C언어] 2847번 (0) | 2020.09.02 |