그것은 채점에 문제가 있는 것이 아니고, 프로그램이 오작동을 할 여지가 있기 때문에 나는 것입니다.
문제는 54번째 줄입니다. 길이가 25인 문자열을 %s로 입력받으려면 최소 26칸이 필요합니다. 마지막에 널 문자가 들어가기 때문입니다. 인덱스를 1부터 시작하므로 최소 26번째 칸까지는 사용이 가능해야 하는데, mat_char의 크기가 26이므로 인덱스가 25까지밖에 없어서 메모리를 침범하게 됩니다.
이 때 9번째 줄이 어떤 역할을 하느냐면, 이 인덱스가 넘어선 바로 다음 위치가 visited 배열이 되어 그 방파제 역할을 하도록 프로그램이 만들어졌기 때문입니다. 이게 없다면 그 역할은 더 위에 있는 int N이 대신 맞게 되고, 이 때문에 N의 값에 변동이 생겨 잘못된 동작을 한 것으로 예측됩니다.
물론 이것은 추측이 그런 것이고, 실제로는 메모리의 전혀 다른 부분을 건드렸을 수도 있습니다. 확실한 것은, 이 프로그램은 정상적이지 않은 동작을 할 가능성이 있다는 것입니다.
cha 5년 전
bool visited[26][26] = {0,}; 가 실제로 사용되지 않음에도 정의 유무에 따라서 결과가 달라집니다.
위 선언을 지우거나 위치만 옮겨도 오답이 나는 것으로 보아 문제가 있는 것 같습니다.