디버거를 켜기만 해도 people_move에서 stack overflow가 발생한다고 나옵니다. 디버거를 끄고 33번째 줄 arr[row][col] = num;에다가 브레이크포인트를 걸고 다시 디버거를 켭니다. 그러면 33번째 줄에서 코드가 중단되어 있고, 밑에 변수 조사식에다가 row, col, num을 입력해 둡니다. 그리고 재생을 반복해 누르면 people_move 함수가 (0, 0, 33), (0, 1, 33)의 인자로 무한히 번갈아 호출된다는걸 알 수 있습니다.
pmch0325 3년 전
입력한 테스트케이스 (test.txt 파일) 내용은 아래입니다.
2 20 50
50 30
20 40
19번째 줄에 if( arr[row][col]<50 ) return;
는 디버깅하면서 재귀가 더 들어가지 않게 임시로 넣어논 줄입니다.
이 코드에서 문제가 되는 부분은 18번째 줄입니다.
unionsc[1]이 2이상이 되면은 코드가 먹통이 됩니다...
unionsc[1] 값을 1로 고정해버리면 코드가 실행은 됩니다.
이게 왜 문제가 되는건지도 모르겠는데 더 이해가 안되는 점은 이걸 실행하면 정말 말그대로 먹통이 되어서 18번째 줄까지 가기 전에 메인함수에서 먼저 실행돼야할 테스트용 출력함수도 실행이 안돼서 출력이 아무것도 안뜨고 프로그램이 종료되거나 아니면 무한루프처럼 아무반응이 없습니다.
solution함수에 무한루프가 있긴 한데 여기를 바꿔봐도 똑같은 현상인걸 봐서는 이 부분 문제도 아닌거같습니다.
그리고 무한루프 문제라면 앞에 출력함수는 출력이 되고 무한루프가 되야 하는건데 이건 뭐가 문제인건지 감을 못잡겠습니다.
도와주세요ㅠㅠㅠㅠㅠㅠ