문자열 암호화가 오답이라합니다....

  • dmatrix
    dmatrix

    안녕하세요.. 아무리 봐도 왜 오답인지 몰라서 여기에 질문올립니다...

    문자열 암호화 문제 링크입니다.

    #include <iostream>
    using namespace std;
    
    const int MAX_STRING_LENGTH = 10;
    
    void DoEncryption(char str[MAX_STRING_LENGTH + 1])
    {
        char oddChar[MAX_STRING_LENGTH / 2] = { '\0' };
        char evenChar[MAX_STRING_LENGTH / 2] = { '\0' };
    
        int oddLen = 0;
        int evenLen = 0;
        for (int i = 0; i != MAX_STRING_LENGTH && str[i] != '\0'; ++i)
        {
            if (i % 2)
            {
                oddChar[oddLen++] = str[i];
            }
            else
            {
                evenChar[evenLen++] = str[i];
            }
        }
    
        for (int i = 0; i != evenLen; ++i)
        {
            str[i] = evenChar[i];
        }
    
        for (int i = 0; i != oddLen; ++i)
        {
            str[i + evenLen] = oddChar[i];
        }
    }
    
    int main(int argc, char* argv[])
    {
        int count = 0;
        cin >> count;
        cin.ignore();
    
        for (int i = 0; i != count; ++i)
        {
            char str[MAX_STRING_LENGTH + 1] = { '\0' };
            cin.getline(str, MAX_STRING_LENGTH + 1);
    
            DoEncryption(str);
    
            cout << str << endl;
        }
    }
    

    DoEncryption 함수에서 입력된 문자열을 받아서
    홀수, 짝수에 저장하고 그걸 하나로 합쳐주는데요...

    테스트케이스에 넣은 값들을 넣어봐도 잘 나오고 제가 따로 만든 값을 넣어도 잘 나옵니다.

    입력이 문제일까요? 아니면 알고리즘 자체가 이상한걸까요..?

    튜토리얼 문제인데 막히니 답답하네요.. ㅠㅠ


    9년 전
4개의 댓글이 있습니다.
  • dmatrix
    dmatrix

    답변 감사합니다..

    그런데 다른 문제들은 답을 저런식으로 출력해도 문제가 되지 않더라고요..


    9년 전 link
  • Taeyoon_Lee
    Taeyoon_Lee

    MAX_STRING_LENGTH을 100으로 바꾸세요.


    9년 전 link
  • dmatrix
    dmatrix

    엇... 감사합니다. 지금 저도 저걸 확인해서 바꾸니까 정답이 되더라고요..

    답변주신분들 감사합니다.


    9년 전 link
  • hyunhwan
    hyunhwan
    • 대부분의 문제를 보시면 다음과 같이 입력에 대한 제약 조건이 주어집니다. 이에 대한 올바른 처리가 없을 경우에는 구현이 올바르게 동작하더라도, 제대로 동작하지 않을 수 있습니다.

    그 다음 줄 부터 T개의 줄에는 암호화를 하고자 하는 문자열이 입력된다. 문자열에는 공백이 포함되지 않으며, 문자열의 길이는 100자를 넘지 않는다.

    • 입력을 모두 받고 처리하는 방법,입력을 받고나서 바로 처리를 하는 방법 두가지 모두 가능합니다. 하지만 사용 메모리를 고려할 경우 앞의 방법을 사용하는것을 권장합니다. 각 테스트 케이스에 대해 사용되는 메모리의 양이 mem이라 할 때, 앞의 방법의 경우에는 T \times mem의 메모리가 필요하고, 후자의 경우에는 mem 만큼의 메모리가 필요합니다.

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