[백준] 1541번: 잃어버린 괄호
2018. 6. 2. 04:11ㆍ알고리즘
1541번: 잃어버린 괄호
첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 많이 연속되는 숫자는 없다. 수는 0으로 시작할 수 있다.
www.acmicpc.net
덧셈과 뺄셈, 그리고 괄호만을 이용해서 최솟값을 구하는 문제입니다.
한 번 '-'가 나오고 난 다음에는 괄호를 이용해서 그 다음 값들을 모두 빼줄 수 있기 때문에 처음 '-'가 나오면, 그 뒤의 수들은 모두 빼주면 됩니다.
#include <iostream>
#include <string>
using namespace std;
string equation;
int ans;
void input() {
cin >> equation;
}
void addValue(int tmpNum, bool isMinus) {
if (isMinus) {
ans -= tmpNum;
}
else {
ans += tmpNum;
}
}
void calculate() {
ans = 0;
bool isMinus = false;
int size = equation.size();
int tmpNum = 0;
for (int i = 0; i < size; i++) {
if ('0' <= equation[i] && equation[i] <= '9') {
tmpNum = tmpNum * 10 + (equation[i] - '0');
}
else {
addValue(tmpNum, isMinus);
if (equation[i] == '-') {
isMinus = true;
}
tmpNum = 0;
}
if (i == size - 1) {
addValue(tmpNum, isMinus);
}
}
}
void printAnswer() {
cout << ans << '\n';
}
int main() {
input();
calculate();
printAnswer();
return 0;
}
'알고리즘' 카테고리의 다른 글
[백준] 10610번: 30 (0) | 2018.06.03 |
---|---|
[백준] 1744번: 수 묶기 (0) | 2018.06.03 |
[백준] 11399번: ATM (0) | 2018.06.02 |
[백준] 1931번: 회의실 배정 (0) | 2018.06.02 |
[백준] 11047번: 동전 0 (0) | 2018.05.31 |