카테고리 없음

백준 1541

조강학의 백준기록일기 2024. 5. 20. 12:40

4주차-3)

잃어버린 괄호

 

세준이는 양수와 +, -, 그리고 괄호를 가지고 식을 만들었다. 그리고 나서 세준이는 괄호를 모두 지웠다.

그리고 나서 세준이는 괄호를 적절히 쳐서 이 식의 값을 최소로 만들려고 한다.


expression에 식을 한줄로 입력받는다.

 

2+3-4-5 =>  2+3-4-5

2+3-4+5 =>  2+3-(4+5)

2-3+4+5 =>  2-(3+4+5)

2-3+4-5 =>  2-(3+4)-(5)

 

-가 올 경우 뒤에 다른 - 가 나올 때까지 나오는 숫자를 괄호로 묶어준다.

즉 -가 나온다면 뒤에 나오는 숫자는 모두 뺴주는 식이 결과가 최소가 되는 식이된다.

 

따라서 minus 변수를 부울형 변수로 선언해주고 ' - ' 연산자가 등장했다면 그 bool값을 true로 변경해준 뒤 그 뒤 모든 숫자를 뺴주는 연산을 시행하였다. 

 

 

 

#include<iostream>
#include<string>
using namespace std;
int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL);

	string expression;
	cin >> expression;

	int result = 0;
	string num;
	bool minus = false;
	for (int i = 0;i < expression.size()+1;i++) {
		if (expression[i] == '+' || expression[i] == '-' || i == expression.size()) {
			if (minus) {
				result -= stoi(num);
				num = "";
			}
			else {
				result += stoi(num);
				num = "";
			}
		}
		else {
			num += expression[i];
		}
		if (expression[i] == '-') {
			minus = true;
		}
		
	}

	cout << result;
	return 0;

	
}