Programming Solve/BOJ

BOJ 1541 잃어버린 괄호 / C++

msm1029 2021. 7. 16. 22:43
반응형

문제 링크 : https://www.acmicpc.net/problem/1541

 

1541번: 잃어버린 괄호

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

www.acmicpc.net

 

문제 풀이 및 코드

주석 참고

// '-'가 나온 시점부터 음수이므로
// '-'가 나올때까지 모두 더하고 '-'가 나오면 모두 뺀다.

#include <iostream>
#include <string>
using namespace std;

int main() {
	string equation;
	cin >> equation;

	string tmp = "";
	bool neg = false; //음수 시작
	int answer = 0;

	for (int i = 0; i < equation.size(); i++) {
		if (equation[i] == '+' || equation[i] == '-') {
			if (neg) answer -= stoi(tmp);
			else answer += stoi(tmp);
			tmp = "";

			if (equation[i] == '-') neg = true;
		}
		else {
			tmp += equation[i];
		}
	}

	if (neg) answer -= stoi(tmp);
	else answer += stoi(tmp);

	cout << answer;
}
반응형