ENCRYPT 질문있습니다.

  • 김민주
    김민주

    ENCRYPT

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        int testNum = 0;
        int index = 0;
    
        char str[10][101];
        char oddTemp[51] = { '0', };
        char evenTemp[51] = { '0', };
    
        cin >> testNum;
    
        for (int i = 0; i < testNum; i++)
        {
            cin >> str[i];
    
            for (int j = 0; j < sizeof(str[i]) / sizeof(char); j++)
            {
                if (str[i][j] == '\0')
                {
                    index = j;
                }
            }
    
            int evenCount = 0;
            int oddCount = 0;
    
            for (int j = 0; j < index; j++)
            {
                if (j % 2 == 0)
                {
                    evenTemp[evenCount] = str[i][j];
                    evenCount++;
                }
                else
                {
                    oddTemp[oddCount] = str[i][j];
                    oddCount++;
                }
            }
    
            for (int j = 0; j < index; j++)
            {
                str[i][j] = '0';
            }
    
            for (int j = 0; j < evenCount; j++)
            {
                str[i][j] = evenTemp[j];
                evenTemp[j] = '\0';
            }
    
            for (int j = 0; j < oddCount; j++)
            {
                str[i][j + evenCount] = oddTemp[j];
                oddTemp[j] = '\0';
            }
    
            str[i][evenCount + oddCount] = '\n';
        }
    
        for (int i = 0; i < testNum; i++)
        {
            for (int j = 0; j < 101; j++)
            {
                printf("%c", str[i][j]);
                if (str[i][j] == '\n') break;
            }
        }
    }
    

    대략적인 알고리즘은 짝수 문자열과 홀수 문자열을 따로 만든다음 다시 합쳐서 하나의 문자열로 만들 뒤에 출력하는 알고리즘입니다. 개행문자 문제 인듯 싶어 버퍼크기도 유의하였고 개행문자를 삽입까지 해보았지만 문제를 찾지 못하였습니다. 도움 부탁드립니다.


    3년 전
2개의 댓글이 있습니다.
  • Signin
    Signin

    질문해주실 때 오답이 나오는지, 아니면 시간 초과가 나오는지 등의 정보를 써주시면 더 좋을 것 같습니다 :)
    예제 문제의 답은 잘 나오나요~?


    3년 전 link
  • 김민주
    김민주

    개행문자 '\n'이 문제였습니다. C++에서 \0로 끝문자를 처리하니 문제가 해결되었습니다.


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