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일 이상이 지나셔야
합니다. 현재 문제를 푸셨습니다.
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;
}
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);
}
12년 전