XHAENEUNG 문제 질문있습니다!~

  • codemist
    codemist
    #include <iostream>
    #include <string>
    
    using namespace std;
    
    struct  jej
    {
        string fnum;
        char opera;
        string snum;
        char equal;
        string result;
        string yesno;
        int R;
    };
    
    string K[11] = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten"};
    int main()
    {
        int C;
        scanf("%d", &C);
        jej *S = new jej[C];
    
        for (int i = 0; i < C; i++)
            cin >> S[i].fnum >> S[i].opera >> S[i].snum >> S[i].equal >> S[i].result;
    
        for (int i = 0; i < C; i++)
        {
            if (S[i].opera == '+')
            {
                int j = 0;
                for (j = 0; j <= 11; j++)
                {
                    if (S[i].fnum == K[j])
                        break;
                }
                int k = 0;
                for (k = 0; k <= 11; k++)
                {
                    if (S[i].snum == K[k])
                        break;
                }
                if (j == 11 || k == 11)
                {
                    return 0;
                }
                if (j + k < 11)
                    S[i].R = j + k;
                else
                    S[i].yesno = "No";
            }
    
            else if (S[i].opera == '-')
            {
                int j = 0;
                for (j = 0; j <= 11; j++)
                {
                    if (S[i].fnum == K[j])
                        break;
                }
                int k = 0;
                for (k = 0; k <= 11; k++)
                {
                    if (S[i].snum == K[k])
                        break;
                }
                if (j == 11 || k == 11)
                {
                    return 0;
                }
                if (j - k > -1)
                    S[i].R = j - k;
                else
                    S[i].yesno = "No";
            }
    
            else if (S[i].opera == '*')
            {
                int j = 0;
                for (j = 0; j <= 11; j++)
                {
                    if (S[i].fnum == K[j])
                        break;
                }
                int k = 0;
                for (k = 0; k <= 11; k++)
                {
                    if (S[i].snum == K[k])
                        break;
                }
                if (j == 11 || k == 11)
                {
                    return 0;
                }
                if (j * k < 11)
                    S[i].R = j * k;
                else
                    S[i].yesno = "No";
            }
            else
            {
                S[i].yesno = "No";
            }
        }
    
        for (int i = 0; i < C; i++)
        {
            if (S[i].R < 11 && S[i].R>-1)
            {
                if (K[S[i].R].size() == S[i].result.size())
                {
                    for (int j = 0; j < K[S[i].R].size(); j++)
                    {
                        string temp = K[S[i].R].substr(j, 1);
                        int index = S[i].result.find(temp);
                        if (index == -1)
                        {
                            S[i].yesno = "No";
                            break;
                        }
                        else
                        {
                            S[i].yesno = "Yes";
                            S[i].result.replace(index, 1, "0");
                        }
                    }
                }
                else
                {
                    S[i].yesno = "No";
                }
            }
    
        }
        for (int i = 0; i < C; i++)
            cout << S[i].yesno << endl;
        delete[] S;
        return 0;
    }
    

    네... 코드 개판이죠...
    제가 궁금한점은 일단 제 컴퓨터상에서는 답이 잘 나오지만 당연하게도 서버에서는 오답으로 뜹니다.
    제 질문은 혹시 그 이유가
    2
    two + three = ivef
    zero * zero = one
    이렇게 입력을 할때 저는 char*이나 string으로 한번에 입력받은게 아니라 구조체를 이용하여 입력받았습니다. 혹시 제가 구조체를 이용하여 입력받았기 때문에 오류가 생기는 걸까요?
    아니면 혹시라도 제가 논리적인 오류를 못 찾고 있다면 힌트 하나만 주세요 ㅠㅠ


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