7*7 격자판 미로를 탈출하는 경로의 가지수를 출력하는 프로그램을 작성하세요. 출발점은 격
자의 (1, 1) 좌표이고, 탈출 도착점은 (7, 7)좌표이다. 격자판의 1은 벽이고, 0은 통로이다. 격
자판의 움직임은 상하좌우로만 움직인다. 미로가 다음과 같다면
위의 지도에서 출발점에서 도착점까지 갈 수 있는 방법의 수는 8가지이다.
INPUT
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
OUTPUT
8
0
이어야 한다.1
로 바꿈으로써 해결된다.(x,y)
에서 x+1
, x-1
, y-1
, y+1
이 각각 0
에서 6
사이인지 검사하여 해결한다. const solution = (maze) => {
let answer = 0;
const dx = [-1, 0, 1, 0];
const dy = [0, 1, 0, -1];
const DFS = (x, y) => {
if (x === maze.length - 1 && y === maze.length - 1) {
answer++;
} else {
for (let i = 0; i < 4; i++) {
let nx = dx[i] + x;
let ny = dy[i] + y;
if (nx >= 0 && nx <= 6 && ny >= 0 && ny <= 6 && maze[nx][ny] === 0) {
maze[nx][ny] = 1;
DFS(nx, ny);
maze[nx][ny] = 0;
}
}
}
};
maze[0][0] = 1;
DFS(0, 0);
return answer;
};