Algospot 2주년 모의고사 - prefix 문제입니다.

  • DAEJIN
    DAEJIN

    안녕하세요..

    prefix 문제를 풀어보았는데요

    WA 인데

    아무리 생각해도 이유를 모르겠어서 이렇게 질문올립니다 ㅠ

    저에게 도움을 주세요 ~~



    #include
    #include

    #define MAX_NUM_WORDS 3000
    #define MAX_LENGTH_WORDS 200

    int
    matching_count(char word[][MAX_LENGTH_WORDS], int numOfwords, int maxlenOfwords, char *key, int keylen)
    {
    int count = 0;

    if (maxlenOfwords < keylen)
        return -1;
    
    for (int i = 0; i < numOfwords; i++) {
        if (strlen(word[i]) < keylen)
            continue;
    
        if (!strncmp(word[i], key, keylen))
            count++;
    }
    
    return count;

    }

    void
    printSubstr(char *str, int nth)
    {
    for (int i = 0; i < nth; i++)
    printf("%c", str[i]);
    printf("\n");
    }

    int
    main(void)
    {
    int T;
    scanf("%d", &T);

    while(T--) {
        int     numOfwords;
        int     maxlenOfwords;
        char    words[MAX_NUM_WORDS][MAX_LENGTH_WORDS];
        char    *result;
    
        scanf("%d %d", &numOfwords, &maxlenOfwords);
        for (int i = 0; i < numOfwords; i++)
            scanf("%s", &words[i]);
    
    
        result = words[0];
        for (int i = 1; i <= maxlenOfwords; i++) {
            int count = -1;
            int nth = -1;
            int tmp;
    
            for (int j = 0; j < numOfwords; j++) {
                if (nth == i && !strncmp(words[j], result, i))
                    continue;
    
                int strLen = strlen(words[j]);
                if (strLen > maxlenOfwords)
                    break;
                else if ((tmp = matching_count(words, numOfwords, maxlenOfwords, words[j], i)) > count) {
                    result = words[j];
                    nth = i;
                    count = tmp;
                } else if (tmp == count) {
                    if (strncmp(result, words[j], i) > 0)
                        result = words[j];
                }
            }
    
            printSubstr(result, nth);
        }
    }
    
    return 0;

    }


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