위의 문제는 단순히 괄호를 추가하여 가장 작은 값을 만들면 됩니다. 

예제 입력 1

55 - 50 + 40 에서 가장 작은값을 만드는 괄호는

55 - (50 + 40) = -35입니다. => 정답이 -35 로 출력되어 맞죠.

 

 

첫 입력부와 마지막 입력부는 숫자입니다. 

첫입력부 숫자 앞에는 - 부호가 붙지 않으니 무조건 양수입니다. 

 

ex )  A + B - C + D - E - F + G + H - I

A + B - [C + D] - [E] - [F + G + H] - [I]

 

처음 - 부호가 나오고 이후의 숫자들은 +이던 -이던 괄호 처리로 무조건 뺄 수 있습니다.

- 부호 이후부터 나오는 모든 값들을 빼주면, 최대한으로 빼주게 됩니다.

 

 

+와 - 그리고 ()까지 있어서 charater별 check하기위해 string사용하였습니다. 

InputData에서 string으로 식 받아옵니다. 

 

<C++>

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

//입력받는부분
string input;

void InputData(){

	cin >> input;
}
int main(){

	InputData();

	
	int ans = 0;

	// 숫자 받아올 버퍼입니다.
	string temp;
	//처음 마이너스 부호 구분 flag입니다.
	bool FirstMinusFlag = false;
	
	for(int i = 0; i<= input.size(); i++)
	{
		

		if( input[i] == '-' || input[i] == '+' || input[i] == '\0')
		{

			if(FirstMinusFlag == true)
			{
				//stoi로 string to int 형변형입니다.
				ans -= stoi(temp);

			}
			else
			{
				ans += stoi(temp);
				
			}
			
			// ans에 temp값 처리된 후 다음 숫자를 받아오기 위해 clear합니다.
			temp.clear();
			if(input[i] == '-')
			{
				//처음 minus 부호 시에만 타는 if문입니다.
				FirstMinusFlag = true;
			}
			
			continue;
		}

			//char 한숫자씩 string에 담습니다. stoi로 위에서 형변형을 함으로 10진수 처리 안해줘도 됩니다.
			temp += input[i];
			
			//Debugging Code
			// cout<<"i :"<<i<<"temp :"<<temp<<endl;

	
			//cout<<"i :"<<i<< "ans: "<<ans<<endl;

	}
	cout<<ans<<endl;
	
	return 0;
}

 

<Python>

 

s = str(input())

#int 형
sum = 0

FirstMinusFlag = False

temp = ""

for i in s:

# Python string은 할당된 string이상의 index에 접근하지 못하도록 되어있음
# overflow를 강제로 발생시킬수 없음.
    if(i == '-' or i == '+'):    
        
      
        if(FirstMinusFlag == True):
            sum -= int(temp)
        else :
            sum += (int(temp))
            
        temp = ''
        if(i == '-') :
            FirstMinusFlag = True
        #부호일때 temp에 부호가 추가되지 않도록 continue
        continue
        
    temp += str(i)


#마지막 숫자를 추가해줌
if(FirstMinusFlag == True):
    sum -= int(temp)
else :
    sum += (int(temp))


print(sum)

 

 

+ Recent posts