압축메소드문제인데요ㅠㅠ제발도와주세요

  • JAZZTIC
    JAZZTIC

    ##
    보시다시피 압축메소드문제인데요,
    예시로제시한 테스트케이스같은경우 에러가 나지 않는데
    제출하면 RTE (SIGKILL: program was forcefully killed, probably memory limit exceeded)
    이러한 에러가 뜹니다. 어느부분에서 메모리가 폭팔되는지 전혀 감이 안잡히네요 ㅠㅠ
    어느부분을 손 봐야 할지 잘 모르겠습니다 ㅠㅠ

    고수님들 힌트라도 주시면 정말 감사합니다!

    #include <iostream>
    #include <string>
    #include <stdlib.h>
    using namespace std;
    
    string GetACM(string strObj);
    
    int main(){
        string**    strInput;
        int         nTestCase;
    
        cin >> nTestCase;
    
        strInput = new string*[nTestCase];
    
        for(int i = 0 ; i < nTestCase; i++)
        {
            strInput[i] = new string[2];
        }
    
        for(int i = 0 ; i < nTestCase; i++){
            for(int j = 0 ; j < 2 ; j++){
                cin >> strInput[i][j];
            }
        }
    
        for(int i = 0 ; i < nTestCase ; i++){
            if((GetACM(strInput[i][0]) == GetACM(strInput[i][1])))  {
                cout << "YES" <<endl;
            }
            else{
                cout << "NO" <<endl;
            }
            delete[] strInput[i];
        }
    
    
        return 0;
    }
    
    
    string GetACM(string strObj){
        string strCopy = "";
        string Buffer = "";
        string strNum ="";
    
    
        int i = 0 ;
    
        while(int(strObj.size()) != i)
        {
            strNum = "";
            strCopy = "";
    
            if(strObj[i] == '('){
                i++;
                while(1){
                    if(strObj[i] == ')'){
                        break;
                    }
                    strCopy += strObj[i];
                    i++;
                }//복사해서 붙혀넣을 문자열 strCopy에 저장
    
                i = i + 2;
    
                while(1){
    
                    if(strObj[i] == '('||(strObj[i] >= 'A' && strObj[i] <= 'Z')||(int(strObj.size()) == i)) {
                        break;
                    }
                    strNum += strObj[i];
                    i++;
                }
                for(long long j = 0 ; j < atoi( strNum.c_str() ); j++){
                    Buffer += strCopy; 
                }
            }//첫번쨰 if문 닫는 괄호
            else{
                Buffer += strObj[i];
                i++;
    
            }
    
        }
    
        return Buffer;
    
    }
    

    9년 전
1개의 댓글이 있습니다.
  • JongMan
    JongMan

    실제 압축을 해제한 문자열은 엄청나게 길 수 있습니다.


    9년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.