문제 출처

1. 문제설명


  • 어떤 수식이 있었다.
  • 근데 최종적으로 이 수식의 괄호를 전부 지워버렸다.
  • 이 수식에서 괄호를 적당히 쳐서 값을 최소로 만들고 싶다.
  • 이 때의 최소값을 출력하라.



2. 알고리즘 설계


  • 몇 번 시도해보면 알겠지만,
  • 처음 - 기호를 만났을 때 괄호를 열고,
  • 맨 끝에 괄호를 닫으면
  • 그게 최소값이다.



3. 로직


  • 기본적으로 -, +를 만나기 전까지는 전부 숫자로 변환한다.
  • flag 변수를 두어, -를 만나면 그 때부터의 값을 전부 빼주면 된다.
    • 괄호가 쳐졌으니, 전부 마이너스가 붙는 거나 다름없다!



4. 전체 코드


#include<bits/stdc++.h>
using namespace std;

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(NULL);

	int ans = 0;

	string str = "";
	cin >> str;

	string tmp = "";
	bool flag = false;
	for (int i = 0; i <= str.size(); i++) {
		if (str[i] == '-' || str[i] == '+' || str[i] == '\0') {
			if (flag) ans -= stoi(tmp);
			else ans += stoi(tmp);

			tmp = "";
			if (str[i] == '-') flag = true;
		}
		else tmp += str[i];
	}

	cout << ans;

	return 0;
}