ZEROONE 오답 케이스를 찾지못하겠습니다.

  • blue2soul
    blue2soul

    ZEROONE 도전하고 있습니다.
    문제 제출하면 시간초과도 아니고 오답이라고 나오네요.
    아래 보시면 배열을 하나더 생성해서 sum 값을 저장하는 cashData 를 기준으로 비교하도록 구현되어있습니다.
    혹시 어떤케이스를 빠뜨렸는지 고수님들의 도움이 필요합니다 ㅠㅠ

    #include <iostream>
    #include <stdio.h>
    #include <string.h>
    
    using namespace std;
    
    void checkData(char * cashData,char * inputData)
    {
        int startNum,endNum;
        scanf("%d %d",&startNum,&endNum);
    //    cout<<"cashData[endNum]:"<<(int)cashData[endNum]<<" cashData[startNum]:"<<(int)cashData[startNum]<<endl;
        if(inputData[endNum] != inputData[startNum])
           goto NO;  
        if(0 == (cashData[endNum] - cashData[startNum]))
           goto YES;
        if((cashData[endNum] - cashData[startNum]) == (endNum-startNum))
           goto YES;
    NO:
        cout<<"No"<<endl;
        return;
    YES:
        cout<<"Yes"<<endl;
        return;    
    }
    
    int main()
    {    
        int caseNum = 0;
        int length = 0;
        int sum = 0;
        char inputData[1000001] = {0};
        char cashData[1000000] = {0};
        scanf("%s",inputData);
        length = strlen(inputData);
        for(int i=0;i<length;i++) {
            sum += (inputData[i]-0x30);
            cashData[i] = sum;
        }
    
        scanf("%d",&caseNum);
        for(int i=0;i<caseNum;i++)
            checkData(cashData,inputData);
        return 0;
    }
    

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

    cashtData의 자료형에 대해 생각해 보세요~


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