XHAENEUNG 문제 질문 드립니다.

  • gimmetheone
    gimmetheone

    0ms 에서 오답이라고 판정이 됩니다.
    예제를 많이 대입해봤는데 제가 할 때는 답이 오답이 나오지는 않습니다만,
    0ms 오답이 고쳐지지 않아서 질문드립니다. ㅠㅠ

    #include <stdio.h>
    //URI Decoding
    
    int categorize(char buffer[])
    {
        int i = 0;
        int count = 0;
        int count2 = 0;
        if (buffer[i] == '-')
        {
            return -100;
        }
        for (i = 0, count = 0; buffer[i] - 'a' >= 0 && buffer[i] - 'a' <= 25; i++)
        {
            count += buffer[i];
            count2++;
        }
        switch (count)//0~9
        {
        case 448: if (count2 == 4) return 0; else return -100; break;
        case 322: if (count2 == 3) return 1; else return -100; break;
        case 346: if (count2 == 3) return 2; else return -100; break;
        case 536: if (count2 == 5) return 3; else return -100; break;
        case 444: if (count2 == 4) return 4; else return -100; break;
        case 426: if (buffer[i - 1] == 'v' || buffer[i - 2] == 'v' || buffer[i - 3] == 'v' || buffer[i - 4] == 'v')
        {
            if (count2 == 4)
            {
                return 5;
            }
            else
            {
                return -100;
            }
        }
                  else
                  {
                      if (count2 == 4)
                      {
                          return 9;
                      }
                      else
                      {
                          return -100;
                      }
                  }
            break;
        case 340: if (count2 == 4) return 6; else return -100; break;
        case 545: if (count2 == 4) return 7; else return -100; break;
        case 529: if (count2 == 4) return 8; else return -100; break;
        case 327: if (count2 == 4) return 10; else return -100; break;
        default: return -100; break;
        }
    }
    
    int rethink(int z, char susBuffer[])
    {
        int i, j;
        i = j = 0;
        char buffer[11][10] = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten" };
        char calBuffer[10] = { 0 };
        int count = 0;
        for (i = 0; i < 10; i++)
        {
            calBuffer[i] = buffer[z][i] - susBuffer[i];
        }
    
        for (i = 0; i < z; i++)
        {
            count += calBuffer[i];
        }
    
        if (count == 0)
        {
            return z;
        }
        else
        {
            return -100;
        }
    }
    
    void say(int x, int y, int z, char operation)
    {
        if (z > 0 && z <= 10)
        {
            if (operation == '+')
            {
                if (x + y == z && x + y <= 10 && x + y >= 0)
                {
                    printf("YES\n");
                }
                else
                {
                    printf("NO\n");
                }
            }
            else if (operation == '-')
            {
                if (x - y == z && x - y < 10 && x - y >= 0)
                {
                    printf("YES\n");
                }
                else
                {
                    printf("NO\n");
                }
            }
            else if (operation == '*')
            {
                if (x * y == z && x * y < 10 && x * y >= 0)
                {
                    printf("YES\n");
                }
                else
                {
                    printf("NO\n");
                }
            }
            else if (operation == '/')
            {
                if (x / y == z && x / y < 10 && x / y >= 0)
                {
                    printf("YES\n");
                }
                else
                {
                    printf("NO\n");
                }
            }
        }
        else
        {
            printf("NO\n");
        }
    
    }
    
    int main(void)
    {
        int testCase;
        scanf("%d", &testCase);
        int i, j, k;
        int x, y, z;
        i = j = k = x = y = z = -1;
        char buffer[3][20] = { -1 };
        char operation = 0;
        char equal = 0;
        int count = 0;
        while (testCase-- > 0)
        {
            scanf("%s %c %s %c %s", buffer[0], &operation, buffer[1], &equal, buffer[2]);
            x = categorize(buffer[0]);
            y = categorize(buffer[1]);
            z = categorize(buffer[2]);
            z = rethink(z, buffer[2]);
            say(x, y, z, operation);
            for (i = 0; i < 3; i++)
            {
                for (j = 0; j < 20; j++)
                {
                    buffer[i][j] = 0;
                }
            }
        }
        return 0;
    }
    

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