작성
·
262
0
반복문을 안 쓰고 짜 봤는데 답은 그대로 나오지만 이렇게 짜도 되는 건지 궁금합니다.
1로 바꿔줬다가 0으로 바꿔주는 시점을 이렇게 해도 괜찮을까요??
풀이에서는 DFS 돌아올 때마다 해주시는 것 같아서 질문 드립니다!
const solution = (miro) => {
let ans = 0;
const DFS = (N, M) => {
if (N < 0 || M < 0 || N > 6 || M > 6) return;
if (M === 6 && N === 6) {
ans++;
} else {
if (miro[N][M] === 0) {
miro[N][M] = 1;
DFS(N - 1, M);
DFS(N, M - 1);
DFS(N + 1, M);
DFS(N, M + 1);
miro[N][M] = 0;
}
}
};
DFS(0, 0);
return ans;
};
console.log(
solution([
[0, 0, 0, 0, 0, 0, 0],
[0, 1, 1, 1, 1, 1, 0],
[0, 0, 0, 1, 0, 0, 0],
[1, 1, 0, 1, 0, 1, 1],
[1, 1, 0, 0, 0, 0, 1],
[1, 1, 0, 1, 1, 0, 0],
[1, 0, 0, 0, 0, 0, 0],
])
);
답변 1
0
안녕하세요^^
네. 위에 처럼 해도 되지만 영상처럼 하는 것을 추천합니다. 네 방향이 아니라 대각선까지 8방향을 탐색할 수도 있습니다. 그럴때는 반복문으로 하는게 코드가 간결해 보입니다.