malmang   5년 전

이 소스코드는 오답으로 나오고

14번째 줄 int map2[9][9]; 를 55번째 줄로 옮기면 정답으로 나옵니다.

memcpy는 어차피 배열 복사를 하는 것인데 왜 답이 다르게 나오는 것인가요?? ㅠㅠ 도저히 이해가 안돼서 질문올립니다..

djm03178   5년 전

전역 변수일 경우 언제 어디서 map2를 사용하더라도 전부 같은 map2를 사용하게 됩니다. 즉, 예를 들어 60번째 줄에서 호출된 dfs가 56번째 줄을 실행하게 되면 기존에 있던 map2의 내용이 날아가게 된다는 뜻이고, 그 때문에 그 dfs 함수가 종료되고 다시 61번째 줄로 돌아왔을 때의 map2는 이전과 다른 상태의 map2가 된다는 뜻입니다.

하지만 만일 map2를 지역 변수로 선언하면 dfs가 호출될 때마다 서로 별개의 map2가 만들어지므로 서로 별개의 공간을 사용하기 때문에 기존의 내용을 덮어쓴다거나 하는 일이 없게 됩니다.

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