check 함수가 언뜻 보면 안전한 것 같지만, 실제로는 아주 위험하게 구성되어 있습니다. 과연 N=1이라도 i=0일 때 i + 1 좌표를 방문해야 할까요?
지금의 코드는 설계가 매우 복잡하면서도 안전하지 않습니다. 경우의 수를 인위적으로 나누면 나눌수록 실수할 가능성이 높으므로, 코드를 가능한 간결하면서도 예외를 처리할 수 있는 코드를 작성하는 것이 좋습니다.
check 함수를 다음과 같이 바꾸면 훨씬 짧으면서도 명확하고 안전한 코드를 작성할 수 있습니다.
adfsfsf 5년 전
재귀함수 내에서 방향을 이동하는 순서를 일정하게 설정해놨습니다. 또한, check함수의 반환 값은 10,000을 넘지 않으므로 int형으로도 문제가 없습니다. M, N, K가 모두 100 이하의 자연수이므로 K가 0인 경우를 계산할 이유도 없고, 직사각형들이 영역 전체를 채우지도 않으므로 46번째 줄에서 now가 항상 NULL이 아니게 되어서 루프를 돌지 않을 일도 없습니다.