안녕하세요 ACM을 참가해본 적이없어서 이런 채점 방식이 생소한 학생입니다.. ㅜㅜ
이번에 1주년 모의고사도 참여했는데 한문제도 못풀었어요.. 오늘 예비소집에 문제가 나온거중에..
소문자와 스페이스로 구성된 문자열 2개를 비교하는 문제가 나와서 풀어봤는데..
모조리 Wrong Answer 이 나오는군요 ㅜㅜ;;
혹시 입력받는 변수의 크기를 1024로 고정시켜놔서 그런건가요??
흠.. 한줄에 입력한다고해서.. 이거 벗어나진 않을거같고..
처음에는 단순하게 strcmp 를 이용해서 0이 리턴되면 Y 아니면 N 을 출력하게해도 틀리고..
제가 함수 하나 만들어봐서 올려도 틀리네요..
왜틀린지 이유를 알고싶어요 ㅜㅜ;;
아래는 소스입니다.
#include <stdio.h>
bool cmpstr(char str1[1024], char str2[1024]);
int main()
{
int T;
char buf1[1024], buf2[1024];
scanf("%d", &T);
fflush(stdin);
while(T--)
{
gets(buf1);
gets(buf2);
if(cmpstr(buf1, buf2))
printf("Y\n");
else
printf("N\n");
}
return 0;
}
bool cmpstr(char str1[1024], char str2[1024])
{
int strlen1, strlen2;
int i;
strlen1 = strlen2 = 0;
for(i = 0; str1[i] != NULL; i++)
{
strlen1++;
}
for(i = 0; str2[i] != NULL; i++)
{
strlen2++;
}
if(strlen2 != strlen1)
return false;
for(i = 0; i < strlen1; i++)
{
if(str1[i] != str2[i])
return false;
}
return true;
}
음.. fflush(stdin)을 해주지않으면 scanf 뒤에 gets가 한번 그냥 넘어가 버려서요..
그거때문에 넣었는데 그게 문제가 되는거인가요? 흠.. 안써주면 하나 넘어가는데 어떻게 해결하지 음 -"-
scanf("%d", &T);
gets(buf1);
while(T--)
{
gets(buf1);
gets(buf2);
흐흠.. 서버가 느려서 30분 연장시켜줬길래 submit 해봤는데.. 해도 20분동안 NEW 상태임.. -_-;; 넘 느리네요 휴..
문제 꼭 해결하고싶은데.. ㅁㅊㅁㅊ
아~ 회원가입 안하고 보다가 리플달라고 회원가입하게됫네요 ㅋㅋㅋ
scanf 를 하고 엔터를 치면 이 엔터값을 다른곳에 저장을 시켜줘야 하죠
따라서 코드를
scanf(----)
getchar();
while(---)
{
gets()
gets()
}
이해하셧어요?ㅎ


표준입력을 flush하게되는데, 입력이 표준입력으로(redirection)으로 들어가기 때문에 다음 입력들이 전부 없어지게 됩니다. 따라서 답은 하나만 처리하거나 할 것입니다.