白駿4949:バランスのとれた世界


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

1.近接

  • 以前に解いた括弧問題と同じように解けばよい.
  • の場合、入力値にはスペースが含まれ、単語ごとに1行ではなく1行が入力され、getline(cin,string)関数を使用して入力が受け入れられます.
  • 2.私の回答

    #include <iostream>
    #include <stack>
    #include <string>
    using namespace std;
    
    int main() {
    	ios::sync_with_stdio(false);
    	cin.tie(NULL);
    	cout.tie(NULL);
    
    	while (1) {
    		string input;
    		getline(cin,input);
    		stack<char> balance;
    
    		bool IsAnswer = true;
    		if (input == ".")	break;
    		for (int i = 0; i < input.length(); i++) {
    			if (input[i] == '(') {
    				balance.push('(');
    			}
    			else if (input[i] == '[') {
    				balance.push('[');
    			}
    			else if (input[i] == ')' || input[i] == ']') {
    				if (balance.empty()) {
    					IsAnswer = false;
    					break;
    				}
    				if (input[i] == ')'&& balance.top()=='(') {
    					balance.pop();
    				}
    				else if (input[i] == ']' && balance.top() == '[') {
    					balance.pop();
    				}
    				else {
    					IsAnswer = false;
    					break;
    				}
    			}
    		}
    		if (!balance.empty())	IsAnswer = false;
    		if(IsAnswer)	cout << "yes" << "\n";
    		else cout << "no" << "\n";
    	}
    	
    	return 0;
    }