#include <iostream>
#include <vector>
using namespace std;
int main() {
string n;
cin >> n;
vector<int> num;
vector<char> oper;
int tempNum = 0;
for (int i = 0; i < n.size(); ++i) {
if (isalnum(n[i])) {
tempNum = tempNum * 10 + (n[i] - '0');
}
else {
oper.push_back(n[i]);
num.push_back(tempNum);
tempNum = 0;
}
}
num.push_back(tempNum);
int result = 0;
bool isBracket = false; // - 이면 true, 괄호 안 인가?
int tempResult = 0;
for (int i = 0; i < num.size(); ++i) {
if (i > 0 && oper[i - 1] == '-') {
if (!isBracket) {
isBracket = true;
tempResult += num[i];
}
else if (isBracket) {
result -= (tempResult + num[i]);
tempResult = 0;
}
}
else if (!isBracket)
result += num[i];
else if (isBracket)
tempResult += num[i];
}
result -= tempResult;
cout << result;
return 0;
}
https://www.acmicpc.net/problem/1541
1541번: 잃어버린 괄호
첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다
www.acmicpc.net
'알고리즘 공부' 카테고리의 다른 글
백준 2606번 바이러스 (0) | 2023.03.07 |
---|---|
백준 1260번 DFS와 BFS (0) | 2023.03.07 |
백준 1026번 보물 (0) | 2023.03.03 |
백준 11399번 ATM (0) | 2023.03.02 |
백준 1931번 회의실배정 (0) | 2023.03.02 |