XHAENEUNG 문제 오답 관련 질문입니다.

  • sianux1209
    sianux1209

    문제 링크 https://algospot.com/judge/problem/read/XHAENEUNG

    여러가지 테스트 케이스를 해본 후에 제출을 해보았지만,

    계속 오답으로 나오네요 ㅠㅠㅠㅠㅠㅠㅠ

    현기증 현기증 현기증

    그 문제 댓글에 나온 테스트 케이스로도 진행해보고

    자체적으로 테스트 케이스를 진행도 해보았습니다.

    입출력 결과가 문제에 나온 경우와 같은데,

    오류가 오답이 나옵니다

    현기증 현기증 현기증

    한탄을 들어주셔서 감사합니다.

    #include <stdio.h>
    #include <string.h>
    
    int caseNumber(char ch);
    int checkNumber(int check[]);
    int cmp(char *x, char op, char *y, char eq, char *r);
    int compute(int x, char op, int y, int r);
    void printR(int result);
    
    int main(){
    
        int T, result;
        char x[11];
        char y[11];
        char r[11];
        char op, eq,temp;
    
        scanf("%d", &T);
    
        while(T){
    
            scanf("%s%c", &x,&temp);
            scanf("%c%s%c", &op, &y,&temp);
            scanf("%c%s", &eq, &r);
            result = cmp(x, op, y, eq, r);
            printR(result);
    
            T--;
        }
    }
    
    int compute(int x, char op, int y, int r){
    
        int result;
    
        switch(op){
            case '+':
                result = x+y;
                    if(result <= 10 && result >=0 && result == r)
                        return 1;
                    else
                        return 0;
            case '-':
                result = x-y;
                    if(result <= 10 && result >=0 && result == r)
                        return 1;
                    else
                        return 0;
            case '*':
                result = x*y;
                    if(result <= 10 && result >=0 && result == r)
                        return 1;
                    else
                        return 0;
    
        }
    }
    
    int cmp(char *x, char op, char *y, char eq, char *r){
    
        int resultX[26], resultY[26], resultR[26];
        int i, len;
    
        for(i=0; i<26; i++)
            resultY[i] = resultX[i] = resultR[i] = 0;
    
        len = strlen(x);
        for(i=0; i<len; i++)
            resultX[caseNumber(x[i])]++;
        len = strlen(y);
        for(i=0; i<len; i++)
            resultY[caseNumber(y[i])]++;
        len = strlen(r);
        for(i=0; i<len; i++)
            resultR[caseNumber(r[i])]++;
    
        return compute(checkNumber(resultX),op, checkNumber(resultY), checkNumber(resultR));
    }
    
    int caseNumber(char ch){
    
        switch(ch){
        case 'a':   return 0;
        case 'b':   return 1;
        case 'c':   return 2;
        case 'd':   return 3;
        case 'e':   return 4;
        case 'f':   return 5;
        case 'g':   return 6;
        case 'h':   return 7;
        case 'i':   return 8;
        case 'j':   return 9;
        case 'k':   return 10;
        case 'l':   return 11;
        case 'm':   return 12;
        case 'n':   return 13;
        case 'o':   return 14;
        case 'p':   return 15;
        case 'q':   return 16;
        case 'r':   return 17;
        case 's':   return 18;
        case 't':   return 19;
        case 'u':   return 20;
        case 'v':   return 21;
        case 'w':   return 22;
        case 'x':   return 23;
        case 'y':   return 24;
        case 'z':   return 25;
        }
    }
    
    int checkNumber(int check[]){
    
        int i;
    
        //A=0, B=1, C=2, D=3, E=4, F=5, G=6, H=7, I=8, J=9, K=10, L=11,
        //M=12, N=13, O=14, P=15, Q=16, R=17, S=18, T=19, U=20, V=21, W=22,
        //X=23, Y=24, Z=25
    
        if(check[25] == 1 && check[4] == 1 && check[17] == 1 && check[14] == 1)
            return 0;
        else if(check[14] == 1 && check[13] == 1 && check[4] == 1)
            return 1;
        else if(check[19] == 1 && check[22] == 1 && check[14] == 1)
            return 2;
        else if(check[19] == 1 && check[7] == 1 && check[17] == 1 && check[4] == 2)
            return 3;
        else if(check[5] == 1 && check[14] == 1 && check[20] == 1 && check[17] == 1)
            return 4;
        else if(check[5] == 1 && check[8] == 1 && check[21] == 1 && check[4] == 1)
            return 5;
        else if(check[18] == 1 && check[8] == 1 && check[23] == 1)
            return 6;
        else if(check[18] == 1 && check[4] == 2 && check[21] == 1 && check[13] == 1)
            return 7;
        else if(check[4] == 1 && check[8] == 1 && check[6] == 1 && check[7] ==1 && check[19] == 1 )
            return 8;
        else if(check[13] == 2 && check[8] == 1 && check[4] == 1)
            return 9;
        else if(check[19] == 1 && check[4] == 1 && check[13] == 1 )
            return 10;
    
    }
    
    void printR(int result){
        if(result)
            printf("Yes\n");
        else
            printf("No\n");
    }
    

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

    [XHAENEUNG] 문제 댓글에 있는 예제도 다 확인해 보셨나요?


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