• 문제

    1

  • 고민

    입력형식이 ‘자료형’, ‘변수명 + 자료형의 역순’, … 이기에 공백을 기준으로 처리했다. 변수명은 영문 대소문자로 이루어져있기에 해당 조건문을 통해 변수명과 자료형을 구분해서 저장했다. 배열의 경우 역순으로 출력하면 대괄호의 방향이 바뀌니 열고 닫는 대괄호를 반대로 저장했다.

  • 코드

    #include<iostream>
    #include<stdio.h>
    #include<string>
    #include<algorithm>
    using namespace std;
      
    int main() {
    	ios::sync_with_stdio(false);
    	string base;
    	cin >> base;
    	while (true) {
    		string next;
    		cin >> next;
    		string value = "";
    		string type = "";
    		bool isend = false;
    		bool isvalue = true;
    		for (int i = 0; i < next.size(); i++) {
    			if (isvalue == true) {
    				if ((next[i] - '0' >= 'a' - '0' && next[i] - '0' <= 'z' - '0')
    					|| (next[i] - '0' >= 'A' - '0' && next[i] - '0' <= 'Z' - '0')) {
    					value += next[i];
    				} else {
    					isvalue = false;
    					i--;
    				}
    			}
    			else {
    				if (next[i] == '[') {
    					type += ']';
    				} else if (next[i] == ']') {
    					type += '[';
    				} else if (next[i] == ',') {
    					break;
    				} else if (next[i] == ';') {
    					isend = true;
    				} else {
    					type += next[i];
    				}
    			}
    		}
    		reverse(type.begin(), type.end());
    		cout << base << type << ' ' << value << ";\n";
    		if (isend == true) {
    			break;
    		}
    	}
    	return 0;
    }