Dolphins의 HelloWorld

[백준]Baekjoon1541(Greedy Algorithm) 본문

Algorithm/baekjoon문제풀이

[백준]Baekjoon1541(Greedy Algorithm)

돌핀's 2018. 8. 28. 14:17

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



한번 마이너스가 나오기 전까지는 값들이 모두 양수로 더해지지만


마이너스가 나오고 난 후에는 그 후의 + 는 모두 - 안에서 괄호로 묶이기 때문에


부호가 무엇이든 빼지는 것으로 생각해도 무방하다.


#include <iostream>
#include <string>
#include <algorithm>

using namespace std;

int main()
{
	int result = 0; int first = 0;
	string str;
	bool minus = false;
	cin >> str;
	int size = str.size();
	for (int i = 0; i < size; i++) {
		if (!minus) {
			if (str[i] == '+') {
				result += stoi(str.substr(first, i - first));
				first = i + 1;
			}
			else if (str[i] == '-') {
				result += stoi(str.substr(first, i - first));
				first = i + 1;
				minus = true;
			}
			else if (i == size - 1) {
				result += stoi(str.substr(first, i + 1 - first));
			}
		}
		else {
			if (str[i] == '-' || str[i] == '+') {
				result -= stoi(str.substr(first, i - first));
				first = i + 1;
			}
			else if (i == size - 1) result -= stoi(str.substr(first, i + 1 - first));
		}
	}
	printf("%d\n", result);
}


Comments