본문 바로가기
전공공부/코딩테스트

(c++) 백준 "1541) 잃어버린 괄호"

by 시아나 2022. 6. 7.

https://www.acmicpc.net/problem/1541

 

1541번: 잃어버린 괄호

첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다

www.acmicpc.net


#include <iostream>
#include <vector>
#include <string>
#include <ctype.h>

using namespace std;

int main() {
	string expr; cin >> expr;
	vector<int> num;
	vector<char> oper;
	string str = "";
	for (int i = 0; i < expr.size(); i++) {
		if ('0' <= expr[i] && expr[i] <= '9') {
			str.push_back(expr[i]);
		}
		else {
			num.push_back(stoi(str));
			str = "";
			oper.push_back(expr[i]);
		}
	}
	num.push_back(stoi(str));
	int answer = num[0];
	for (int i = 1; i < num.size(); i++) {
		if (oper[i-1] == '+') {
			answer += num[i];
		}
		else {
			int minus = num[i++];
			while (i < num.size() && oper[i - 1] == '+') {
				minus += num[i];
				i++;
			}
			i--;
			answer -= minus;
		}
	}
	cout << answer << endl;
	return 0;
}