잃어버린 괄호

108번뇌·2021년 5월 23일
0

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

int num = 0;
int flag = 0;
int m = 0;
string tmp = "";
string s;

void solve()
{
	for (int i = 0; i < s.size(); i++)
	{
		if (s[i] == '+' || s[i] == '-' ||i==(s.size()-1))
		{
			if (i == s.size() - 1)
			{
				tmp += s[i];//문자열 합치기
			}

			if (flag)//이상황은 이전문자열에서 -한번나왔을때 
			{
				num -= stoi(tmp);
				tmp = "";
			}
			else
			{
				num += stoi(tmp);
				tmp = "";
			}

			if (s[i] == '-')
			{
				flag = 1;
			}
		}
		else	//
		{
			tmp += s[i];//문자열 합치기
		}
	}
}

int main(int argc, char* argv[])
{
	cin >> s;

	solve();

	cout << num << endl;

	return 0;
}

일단 기본적으로
1]string tmp를 통해서 전체문자열에서 특정부분 합치기
2] + 나 - 해당되는 경우에 flag변수를 통해서,
flag가 1인경우에는 빼고, 0인 경우에는 더한다.
3]연산자가 연속해서 나타나는 경우는 없는데, 맨앞의 숫자빼고 다 -해버리면 가장 작은 최소값의 내용이 나오게된다.
즉, else 문은 한번만 들어오게 된다(맨처음일때)

문자열 처리 받아올때,
전체 반복문 돌리면서
특정조건 아닐때
string stemp += s[i]; 를 해주면서,
만족하는 조건이후 stemp = "";초기화 작업을 한다.ㅣ

profile
내일 아침 눈을 떳을 때, '기대되는 오늘 하루를 만들기 위해' 나는 오늘도 생각하고 고민한다.

0개의 댓글

관련 채용 정보