본문 바로가기
알고리즘

백준 C++ - 잃어버린 괄호(1541) 탐욕법

by jun.s.gi 2023. 4. 4.
728x90

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

 

1541번: 잃어버린 괄호

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

www.acmicpc.net

1. 부호를 만나면 결괏값을 담을 변수에 더한다.

2. 만약 부호가 음수라면 모든 수를 음수로 더한다

 - 괄호를 적절히 사용하므로 빼기 연산 뒤에 괄호를 사용하면 모든 수를 음수로 만들 수 있으므로 음수로 더함

 - 1 + 2 - ( 3 + 4 + 5 + 6 ) - (7 + 8 + 9.....)

 

#pragma warning(disable:4996)
#include <stdio.h>
char sic[100];
int result, swi = 1, temp, idx;
int main()
{
	scanf("%s", sic);
	for (int i = 0; sic[i]; i++)
	{
		if (sic[i] == '-' || sic[i] == '+') // 부호를 만나면 더한다.
		{
			if(sic[i] == '-') // 빼기 연산이라면 모든 수를 음수로 더한다
				swi = -1;

			result += temp;
			temp = 0; // 초기화
		}
		else if('0' <= sic[i] && sic[i] <= '9')
			temp = (10 * temp) + (sic[i] - '0') * swi;

	}
	printf("%d", result + temp); // 마지막 수를 만들고 탈출하므로 끝까지 처리
	return 0;
}
728x90