BAEKJOON /1541:잃어버린 괄호

hyihyi·2021년 8월 2일
0
post-thumbnail

문제보러가기

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

int main() {
	string str;
	string firstNumber;
	string secondNumber;
	int size = 0;
	int number = 0;
	vector <int> fs;
	queue<int> s;
	queue<int> S;
	getline(cin, str, '\n');
	fs.push_back(-1);
	for (int i = 0; i < str.length(); i++) {
		if (str[i] == '-') {
			fs.push_back(i);
		}
	}
	fs.push_back(str.length());
	for (int i = 0; i < fs.size() - 1; i++) {// -개수만큼 반복(2를 fs.size()로 바꿈)
		for (int j = fs[i] + 1; j < fs[i + 1]; j++) {
			if (str[j] == '+') { // (1)
				if (s.size() == 0) {// (2)
					s.push(stoi(firstNumber));
					firstNumber = "";
				}
				else {// (3)
					s.push(stoi(firstNumber) + s.front());
					s.pop();
					firstNumber = "";
				}
			}
			else {//if (47 < str[j] && str[j] < 58) {//수가 나왔을 때 fn에 계속 더하기 (4)
				firstNumber += str[j];
				if (str[j + 1] == '\0' || str[j + 1] == '-') { //(5)
					if (s.size() == 0) { //(6)
						s.push(stoi(firstNumber));
					}//
					else { //(7)
						s.push(stoi(firstNumber) + s.front());
						s.pop();
					}
				}
			}
			//-가 나오면 끝나니까 수가 들어있는 그대로 끝나면 안돼서 큐에 집어넣는 실행문	
		}
		if (S.size() == 0) {
			S.push(s.front());
			s.pop();
		}
		else {
			S.push(s.front());
			s.pop();
		}
		firstNumber = "";
	}
	size = S.size() - 1;
	number = S.front();
	S.pop();
	for (int n = 0; n < size; n++) {
		number -= S.front();
		if (S.size() - 1 != 0)
			S.pop();
	}
	cout << number;
}
profile
자유롭게 쓴 나의 자유로운 Development voyage⛵

0개의 댓글