작성
·
138
0
미로 탐색에서 재귀에 진입하기 전 board에 표시를 할 때,boarr[nx][ny] = 1이 맞나요?
해당 자리에 1로 표시를 해놓고 다음으로 넘어가는 개념이니까
arr[x][y] = 1
이렇게 하는게 맞지않나라는 생각이 드는데
혹시 제가 잘못 이해를 한 걸까요?
결과는 똑같이 나와서 의문이네요.
// 강사님의 답
if(nx >= 0 && nx <= 6 && ny >= 0 && ny <= 6 && board[nx][ny] === 0){
board[x][y] = 1
DFS(nx,ny)
board[x][y] = 0
}
// 저의 답
if(nx >= 0 && nx <= 6 && ny >= 0 && ny <= 6 && board[nx][ny] === 0){
board[x][y] = 1 ★★★
DFS(nx,ny)
board[x][y] = 0 ★★★
}
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
미로 탐색 문제에서 재귀 함수로 다음 위치로 이동하기 전 해당 위치를 방문했다는 표시로 board[nx][ny] = 1
를 해주어야 합니다. nx
와 ny
는 다음에 방문할 좌표를 의미하며, 현재 위치에서 재귀 호출 전에 다음 위치를 방문 했다고 표시하는 게 맞습니다. 그래야지만 다른 경로를 탐색할 때 이미 방문한 곳인지를 체크할 수 있기 때문이죠.
강사님의 코드 및 저의 답 모두 board[x][y] = 1
로 표시한 것은 잘못되었습니다. 다음 위치인 (nx, ny)
에 대해 board[nx][ny] = 1
로 해야 올바른 방문 표시가 됩니다. 저의 답에서 board[x][y] = 1
라고 표기된 부분을 board[nx][ny] = 1
로 바꾸어야 한다는 것을 말씀드리는 것입니다.
결과가 똑같이 나왔다면, 이는 해당 문제의 구조나 데이터 상황에 따라 우연히 영향을 주지 않았을 수도 있습니다만, 일반적인 경우에는 바르게 (nx, ny) 위치를 방문 했다고 표시해야 정확한 동작을 할 것입니다.
도움이 되셨기를 바랍니다.