XHAENEUNG 런타임 오류 스택 오버플로우에 대한 질문......

  • whiteraven
    whiteraven

    입력받은 문자열을 버블정렬로 정렬한뒤
    그 값에 해당하는 값을 return 해준다음
    계산결과를 확인하는 것인데....
    gcc로 컴파일해도 오류가 안나고
    visual로 컴파일해도 오류가 안나는데..
    런타임 오류가 되뜰까요?,,,,

    #include <stdio.h>
    #include <string.h>
    
    int compare(char *arg)
    {
        char arr[11] = {0, };
        strcpy(arr, arg);
        char temp = 0;
        for(int j = 0; j < (int)strlen(arg); j++)
        {
            for(int i = 0; i < (int)strlen(arg)-1; i++)
            {
                if(arr[i+1] < arr[i])
                {
                    temp = arr[i];
                    arr[i] = arr[i+1];
                    arr[i+1] = temp;                
                }
            }
        }
        if(strcmp(arr, "eorz")==0)
        {
            return 0;
        }
        else if(strcmp(arr, "eno")==0)
        {
            return 1;
        }
        else if(strcmp(arr, "otw")==0)
        {
            return 2;
        }
        else if(strcmp(arr, "eehrt")==0)
        {
            return 3;
        }
        else if(strcmp(arr, "foru")==0)
        {
            return 4;
        }
        else if(strcmp(arr, "efiv")==0)
        {
            return 5;
        }
        else if(strcmp(arr, "isx")==0)
        {
            return 6;
        }
        else if(strcmp(arr, "eensv")==0)
        {
            return 7;
        }
        else if(strcmp(arr, "eghit")==0)
        {
            return 8;
        }
        else if(strcmp(arr, "einn")==0)
        {
            return 9;
        }
        else if(strcmp(arr, "ent")==0)
        {
            return 10;
        }
        return 0;
    }
    
    int main()
    {
        int n = 0;
        int A = 0;
        int B = 0;
        int C = 0;
        int ret[100] = {0, };
        char a[11] = {0,};
        char b[11] = {0,};
        char c[11] = {0,};
        char t1;
        char t2;
        scanf("%d", &n);
        for(int i = 0; i < n; i++)
        {
            scanf("%s %c %s %c %s", a, &t1, b, &t2, c);
            A = compare(a);
            B = compare(b);
            C = compare(c);
            if(t1 = '+')
            {
                if(A+B == C)
                {
                    ret[i] = 1;
                }
                else
                {
                    ret[i] = -1;
                }
            }
            else if(t1 = '-')
            {
                if(A-B == C)
                {
                    ret[i] = 1;
                }
                else
                {
                    ret[i] = -1;
                }
            }
            else if(t1 = '*')
            {
                if(A*B == C)
                {
                    ret[i] = 1;
                }
                else
                {
                    ret[i] = -1;
                }
            }
        }
        for(int i = 0; i < n; i++)
        {
            if(ret[i] == 1)
            {
                printf("Yes\n");
            }
            else
            {
                printf("No\n");
            }
        }
        return 0;
    }
    

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

    ret를 100개 잡으셨는데 XHAENEUNG문제에서 T의 제한은 주어지지 않은걸로 기억합니다..


    5년 전 link
  • Taeyoon_Lee
    Taeyoon_Lee

    그리고 참고로, ret배열과 마지막 for문은 필요가 없고, ret[i] = 1 대신에 printf("Yes\n"), ret[i] = -1 대신에 printf("No\n") 를 쓰셔도 됩니다.


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