[c++/백준] 1541번: 잃어버린 괄호

조히·2023년 4월 21일
0

PS

목록 보기
62/82

문제 링크

1541번: 잃어버린 괄호

풀이

그리디 문제

  1. 앞에 - 부호가 있다면 뒤에 나오는 + 부호를 다 -로 바꿔주면 된다.
    만약 55-50+40라면 55-(50+40) 처리를 해서 55-50-40로 바꿔주는 식
  2. 부호가 나온다면 앞에 나온 숫자들을 1번과 같이 처리 후 이후 숫자 처리를 위해 num="" 초기화를 해준다.
    2-1. - 부호가 나온다면 minusFlag=true로(1번 처리를 위해+
  3. 숫자가 나오면 num에 추가해준다.
    3-1. 마지막 숫자는 부호가 나오지 않기 때문에 계산이 안되므로 빼서 처리해준다.

코드

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

int main(void)
{
	string s;
	cin >> s;

	int answer = 0;
	string num="";
	bool minusFlag = false;
	for (int i = 0; i < s.size(); i++)
	{
		if (s[i] == '-' || s[i] == '+')
		{
			if (minusFlag) answer -= stoi(num);
			else answer += stoi(num);
			num = "";
			if (s[i] == '-') minusFlag = true;
		}
		else if ('0' <= s[i] && s[i] <= '9')
		{
			num += s[i];
		}
	}

	if (minusFlag) answer -= stoi(num);
	else answer += stoi(num);

	cout << answer << endl;

	return 0;
}
profile
Juhee Kim | Game Client Developer

0개의 댓글