본문 바로가기

백준/C++

[C++] 백준 1541번 - 잃어버린 괄호

728x90

 

문제 1541번

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

 

 

식의 값을 최소로 만들기 위해서 +먼저 계산해준다. 

 

기호가 들어온다면 -인지 아닌지 구분해서 sum에 계산을 해주고 temp를 비어준다. 여기서 string이기 때문에 int로 바꿔주기 위해 stoi()를 한다. 만약 -가 들어온다면 -여부를 판단해주는 mcheck를 true로 바꿔준다.

 

숫자가 들어온다면 temp에 숫자를 추가해준다.

 

그렇게 반복문을 다 돌고 계산이 끝나면 sum을 출력한다.

 

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

int main() {
	string str, temp;
	cin >> str;
	int sum = 0;
	bool mcheck = false;	//-여부
	for (int i = 0; i <= str.size(); i++) {
		if (str[i] == '+' || str[i] == '-' || i == str.size()) {
			if (mcheck == false) {
				sum += stoi(temp);
				temp = "";
			}
			else {
				sum -= stoi(temp);
				temp = "";
			}
		}
		else {
			temp += str[i];
		}

		if (str[i] == '-') {
			mcheck = true;
		}
	}
	cout << sum;

	return 0;
}

 

 

728x90