kln2040   4년 전

1018번 문제를 풀다가 다른 질문글에서 올라온 예제를 다 해봤는데

제 코드에서는 맞게나옵니다

그러나 백준에서 채점을 하면 틀렸다고 나옵니다

대체 어떤 반례가 있는지 알려주셨으면 감사하겠습니다

djm03178   4년 전

rewind(stdin);은 버퍼를 비우는 용도로 사용할 수 없습니다.

kln2040   4년 전

scanf(" %c,&arr[i][j]); 이렇게 해도

계속 틀렸다고 나오는데 어떤 부분에서 잘못되었는지 알 수 있을까요?

djm03178   4년 전

39~67번째 줄이 31번째 줄의 루프 안쪽으로 들어가야 할 것 같습니다.

kln2040   4년 전

코드 다시 수정했습니다

코드수정 링크) https://ideone.com/c7gB1f

본문 코드도 수정했습니다

8 9

BBBWBWBWB
WBWBWBWBW
BWBWBWBWB
WBWBWBWBW
BWBWBWBWB
WBWBWBWBW
BWBWBWBWB
WBWBWBWBW

이렇게 해서 제 코드에는 답 1나오는데

어느부분이 틀렸는지 알 수 있을까요?

djm03178   4년 전

rewind(stdin);이 아직 그대로 있네요. 이건 아예 사용하면 안 됩니다.

kln2040   4년 전

수정 코드링크) https://ideone.com/sVUQzr

rewind(stdin); 없앴고


scanf(" %c",&arr[i][j]); 로 받았습니다


 %c공백으로 받았습니다


그런데도 계속 틀렸는데 어느부분에서 잘못된건가요?

djm03178   4년 전

그리고 틀린 부분을 하나 고치시긴 했는데 정작 제가 말씀드린 부분은 안 고치셨습니다.

"39~67번째 줄이 31번째 줄의 루프 안쪽으로 들어가야 할 것 같습니다."

kln2040   4년 전

그 혹시 왜 39~67번째 줄이 31번째 줄의 루프 안쪽으로 들어가야 하는 이유좀 알려주실수 있을까요?

https://ideone.com/sVUQzr

이 링크에 있는 코드대로하면

8 9
BBBWBWBWW
WBWBWBWBW
BWBWBWBWW
WBWBWBWBW
BWBWBWBWW
WBWBWBWBW
BWBWBWBWW
WBWBWBWBW

이거의 답이 5나와서 맞는데

왜 39~67번째 줄이 31번째 줄의 루프 안쪽으로 들어가야 하는 이유를 알려주셨으면 합니다..

djm03178   4년 전

5가 아니라 1이 나와야 합니다. 잘 생각해 보세요.

djm03178   4년 전

해당 예시의 경우 (0,0)부터 탐색을 시작해야 맞는 답을 구할 수 있는데 이 코드는 33번째 줄에서 j가 0일 때의 경우가 전혀 계산되지 않고 j가 1일 때 복사된 내용만을 가지고 탐색하기 때문에 정답을 찾을 수 없습니다.

kln2040   4년 전

아 이해됐습니다 답변해주셔서 정말 감사드립니다


수정 정답 코드 링크) https://ideone.com/wIK4AD


왜틀렸는지 알 수 있었습니다

brr이 갱신될때마다 비교를 해야되는데

제가 쓴 코드는 brr이 그냥 싹다 갱신되고나서

한개만 비교해서 틀린거였네요 답변 감사합니다 

댓글을 작성하려면 로그인해야 합니다.