본문 바로가기

알고리즘 문제

[C/C++ 백준 1541번] 잃어버린 괄호 (Silver 2)

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

 

1541번: 잃어버린 괄호

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

www.acmicpc.net

그리디 알고리즘에 해당하는 문제인지는 잘 모르겠다. 한번이라도 -가 나오면 그 뒤에 +이든 -이든 상관없이 괄호에 따라 반드시 -로 만들수 있기 때문에, -가 나온 이후는 모두 빼주면 된다.

 

#include <cstdio>
int main(void){
	int ans=0, num;
	bool minus = false;
	char giho;
	while(1){
		scanf("%d",&num);
		if(scanf("%c",&giho)==-1)
			break;
		if(minus)
			ans -= num;
		else
			ans += num;	
		if(giho=='-')
			minus = true;
	}
	printf("%d",ans);
}