XHAENEUNG..오답질문입니다..(C++)

  • catniz
    catniz

    XHAENEUNG

    코드 설명입니다.
    먼저 A와 B를 숫자로 변환하고 result에 A와 B를 연산한 결과를 result에 넣습니다. 범위밖의 예외처리를 하고, C를 확인합니다.

    alpanum[11][26] 에서 11은 0부터 10까지를 의미하고, 26은 알파벳의 개수입니다. 0부터 10까지 각각의 알파벳 개수를 저장합니다.
    cAlpa[26]은 c가 가진 알파벳의 개수입니다.

    same[11]은 0부터 10중 c와 같은 알파벳 개수를 가진 수가 true가 되고 나머지는 false입니다. 코드 거의 마지막에 각 숫자의 알파벳 개수와 비교하면서 개수가 하나라도 틀릴경우 그 수는 false가 됩니다.

    여기서 작은 a,b,c는 string이고,
    큰 A,B,C는 a,b,c를 숫자로 변환한 값입니다.

    마지막에 C와 result를 비교해서 맞다면 Yes를 출력합니다.

    으.. 여기까지에요.. 더 설명해야 할 게 있는지 모르겠어요..

    코드

    #include <iostream>
    #include <stdio.h>
    #include <cstring>
    
    using namespace std;
    
    int main() {
        int TC;
        char a[6], b[6], c[15], oper[2];
        cin >> TC;
        int alpanum[11][26] = { 0, };
        char *num[11] = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten" };
        int A, B, C, result;
    
        alpanum[0]['z' - 'a'] = 1;
        alpanum[0]['e' - 'a'] = 1;
        alpanum[0]['r' - 'a'] = 1;
        alpanum[0]['o' - 'a'] = 1;
    
        alpanum[1]['o' - 'a'] = 1;
        alpanum[1]['n' - 'a'] = 1;
        alpanum[1]['e' - 'a'] = 1;
    
        alpanum[2]['t' - 'a'] = 1;
        alpanum[2]['w' - 'a'] = 1;
        alpanum[2]['o' - 'a'] = 1;
    
        alpanum[3]['t' - 'a'] = 1;
        alpanum[3]['h' - 'a'] = 1;
        alpanum[3]['r' - 'a'] = 1;
        alpanum[3]['e' - 'a'] = 2;
    
        alpanum[4]['f' - 'a'] = 1;
        alpanum[4]['o' - 'a'] = 1;
        alpanum[4]['u' - 'a'] = 1;
        alpanum[4]['r' - 'a'] = 1;
    
        alpanum[5]['f' - 'a'] = 1;
        alpanum[5]['i' - 'a'] = 1;
        alpanum[5]['v' - 'a'] = 1;
        alpanum[5]['e' - 'a'] = 1;
    
        alpanum[6]['s' - 'a'] = 1;
        alpanum[6]['i' - 'a'] = 1;
        alpanum[6]['x' - 'a'] = 1;
    
        alpanum[7]['s' - 'a'] = 1;
        alpanum[7]['e' - 'a'] = 2;
        alpanum[7]['v' - 'a'] = 1;
        alpanum[7]['n' - 'a'] = 1;
    
        alpanum[8]['e' - 'a'] = 1;
        alpanum[8]['i' - 'a'] = 1;
        alpanum[8]['g' - 'a'] = 1;
        alpanum[8]['h' - 'a'] = 1;
        alpanum[8]['t' - 'a'] = 1;
    
        alpanum[9]['n' - 'a'] = 2;
        alpanum[9]['i' - 'a'] = 1;
        alpanum[9]['e' - 'a'] = 1;
    
        alpanum[10]['t' - 'a'] = 1;
        alpanum[10]['e' - 'a'] = 1;
        alpanum[10]['n' - 'a'] = 1;
    
        while (TC--) {
            bool same[11] = { true, true, true, true, true, true, true, true, true, true, true };
    
            scanf("%s", a);
            cin >> oper[0];
            scanf("%s", b);
            cin >> oper[1];
            scanf("%s", c);
    
            for (int i = 0; i < 11; i++) {
                if (strcmp(num[i], a) == 0)
                    A = i;
                if (strcmp(num[i], b) == 0)
                    B = i;
            }
    
            switch (oper[0]) {
            case '+': result = A + B; break;
            case '-': result = A - B; break;
            case '*': result = A * B; break;
            }
            if ((result < 0) || (result > 10)) {
                cout << "No" << endl;
                continue;
            }
    
            int cSize = strlen(c);
            if (cSize > 5) {
                cout << "No" << endl;
                continue;
            }
            int cAlpa[26] = { 0, };
            for (int i = 0; i < cSize; i++)
                cAlpa[c[i] - 'a']++;
    
            for (int i = 0; i < 11; i++) {
                for (int k = 0; k < 26; k++) {
                    if (cAlpa[k] != alpanum[i][k]) {
                        same[i] = false;
                        break;
                    }
                }
            }
            for (int i = 0; i < 11; i++) {
                if (same[i]) {
                    C = i;
                    break;
                }
            }
            if (C == result)
                cout << "Yes" << endl;
            else
                cout << "No" << endl;
        }
    
        return 0;
    }
    


    10년 전
2개의 댓글이 있습니다.
  • Kureyo
    Kureyo

    C에 대한 초기화가 없는게 문제가 될거같네요


    10년 전 link
  • catniz
    catniz

    아 헐!
    감사합니다 !!


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