LECTURE 문제 질문있습니다.

  • carl111
    carl111

    안녕하세요 C언어 연습중인 초보코더입니다..

    문자열을 입력받아서 두개의 알파벳으로 끊어서

    사전 처럼 빠른순으로 정렬하는 문제인데요

    저는 두개씩 끊은걸 첫번째 알파벳으로 한번 정렬한 뒤

    두번째 알파벳으로 다시 정렬해서 출력하는 식으로 했는데

    '오답'으로 자꾸 뜨네요..

    어디서 오류가 나는건지 알려주시면 감사하겠습니다 !

    #include

    int main()
    {
    int t,i,j,lenth;
    char alpha[1000];
    char swap;
    char a[1000];

    scanf("%d",&t);                     //테스트케이스를 입력받습니다.
    
    while(t)
    {
        for(i=0;i<1000;i++)
        {
            alpha[i]='~';
            a[i]=NULL;
        }                               //각 문자열 초기화
        scanf("%s",alpha);              //문자열 입력
        for(lenth=0;lenth<1000;lenth++)
        {
            if(alpha[lenth]=='~')
                break;
        }                               //입력된 문자열 길이
    
        for(j=lenth/2;j>0;j--)
        {
            for(i=0;i<=j;i++)
            {
                if(alpha[i*2]>alpha[i*2+2])
                {
                    swap=alpha[i*2];
                    alpha[i*2]=alpha[i*2+2];
                    alpha[i*2+2]=swap;
                    swap=alpha[i*2+1];
                    alpha[i*2+1]=alpha[i*2+2+1];
                    alpha[i*2+2+1]=swap;
                }
            }
        }                               //두개의 알파벳중 첫번째 정렬
        for(j=lenth/2;j>0;j--)
        {
            for(i=0;i<=j;i++)
            {
                if(alpha[i*2]>=alpha[i*2+2] && alpha[i*2+1]>alpha[i*2+2+1])
                {
                    swap=alpha[i*2];
                    alpha[i*2]=alpha[i*2+2];
                    alpha[i*2+2]=swap;
                    swap=alpha[i*2+1];
                    alpha[i*2+1]=alpha[i*2+2+1];
                    alpha[i*2+2+1]=swap;
                }
            }
        }                               //두개의 알파벳중 두번째 정렬
    
        for(i=0;i<lenth;i++)
            a[i]=alpha[i];
    
        printf("%s\n",a);
        t--;
    }
    return 0;

    }


    10년 전
1개의 댓글이 있습니다.
  • Taeyoon_Lee
    Taeyoon_Lee

    1) lenth가 4인 경우, j가 2가 되고, i도 2가 되었을 때, alpha[i*2+2]에서 문제가 발생할 수 있어 보입니다.
    2) 입력 문자열의 길이가 최대 1000이므로, 필수적으로 char 배열을 1001 이상으로 잡으셔야 됩니다.


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