ililililil   4년 전

테스트케이스는 모두 맞는데 백준에서 돌리면 모두 런타임에러가 납니다.

try~catch 해보니 Move() 에서 잘못된 것 같은데 도와주십쇼...

rhdqor213   4년 전

Move 함수에서 R = 1일때, 또는 C = 1일때 speed를 구하는 식에서 vs[i].s를 0으로 나눠 런타임 에러가 발생합니다.

ililililil   4년 전

문제의 입력 조건이 아래와 같기 떄문에 (R-1)*2 가 0이 되는 경우는 없습니다..
 (2 ≤ R, C ≤ 100)

rhdqor213   4년 전

문제의 입력 조건을 제대로 파악하지 않고 답변을 단 점 죄송합니다.

직접 코드를 짜서 돌려본 결과 테스트케이스 중 더이상 갈 수 없는 방향으로 진행하는 상어들이 있는 것을 알 수 있었습니다.(첫번째 행이면서 진행방향이 위인 상어 등)

이로 인해서 new_r, new_c를 구할때 값이 1보다 작아지거나 R, C보다 커지는 것이 원인인 듯 합니다.

입력을 받을때 저러한 경우를 미리 처리해주신다거나 new_r, new_c를 구하는 과정을 고쳐주시면 맞았습니다를 받으실 수 있습니다.

ililililil   4년 전

for문 돌려 scanf 받는 부분에 아래 코드를 추가하여 맞았습니다!!를 받았습니다.

if (vs[i].r == 1 && vs[i].d == 1) vs[i].d = 2; 

 else if (vs[i].r == R && vs[i].d == 2) vs[i].d = 1; 

 else if (vs[i].c == 1 && vs[i].d == 4) vs[i].d = 3; 

 else if (vs[i].c == C && vs[i].d == 3) vs[i].d = 4;

며칠간 찾지 못했던 예외 케이스를 발견해주셔서 정말 감사합니다.. 잊지 못할 예외처리가 될 것 같네요.

에러 케이스를 어떻게 찾으셨는지 궁금합니다.. 

도움 주셔서 정말 감사합니다! 주말 잘 보내세요~~

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