작성
·
332
0
Reversion의 응용 - 미로찾기 1을 듣고 있는데요.
printMaze()라는 함수가 강의 내용 중 나오지 않아서 질문드립니다.
혹시 힌트라도 주시면 직접 구현해보려고 하는데 도움 부탁드려요
package test;
public class Recursion_Maze {
/*
* 현재 위치에서 출구까지 가는 경로가 있으려면
* 1) 현재 위치가 출구이거나 혹은
* 2) 이웃한 셀들 중 하나에서 현재 위치를 지나지 않고 출구까지 가는 경로가 있거나
*/
private static int N=8;
private static int maze[][] = {
{0, 0, 0, 0, 0, 0, 0, 1},
{0, 1, 1, 0, 1, 1, 0, 1},
{0, 0, 0, 1, 0, 0, 0, 1},
{0, 1, 0, 0, 1, 1, 0, 0},
{0, 1, 1, 1, 0, 0, 1, 1},
{0, 1, 0, 0, 0, 1, 0, 1},
{0, 0, 0, 1, 0, 0, 0, 1},
{0, 1, 1, 1, 0, 1, 0, 0}
};
private static final int PATHWAY_COLOUR = 0; // WHITE
private static final int WALL_COLOUR = 1; // BLUE
private static final int BLOCKED_COLOUR = 2; // RED
private static final int PATH_COLOUR = 3; // GREEN
public static void main(String[] args) {
printMaze(); // 에러
findMazePath(0,0);
printMaze(); // 에러
}
public static boolean findMazePath(int x, int y) {
if (x<0 || y<0 || x>=N || y>=N) // 좌표 내 유효한 범위인가를 체크
return false;
else if(maze[x][y] != PATHWAY_COLOUR)
return false;
else if(x==N-1 && y==N-1) {
maze[x][y] = PATH_COLOUR;
return true;
}else {
maze[x][y] = PATH_COLOUR;
if(findMazePath(x-1,y) || findMazePath(x, y+1) || findMazePath(x+1, y) || findMazePath(x, y-1)) { // 탐색하기
return true;
}
maze[x][y] = BLOCKED_COLOUR; // dead end 어떤 방향으로 가도 출구까지 가는 경로가 없다.
return false;
}
}
}
답변 3
0
이렇게 하시면 될 것 같습니다. ^^
public static void printMaze() {
// 2차원 배열 출력 메서드
for (int i = 0; i < maze.length; i++) {
for (int j = 0; j < maze[i].length; j++) {
System.out.print(maze[i][j] + " ");
}
System.out.println("");
}
System.out.println("");
}
0
print Maze()
->
for (int i=0; i<maze.length; i++){
System.out.println(Arrays.toString(maze[i]));
}
0
질문을 올리고 나서 구글에 printMaze()를 검색해보니
printMaze() 함수는 maze[][]를 출력하는 것이더군요.
생각해보면 당연한 것인데 생각이 짧았습니다.
혹시 저와 같은 분이 있으면 maze[][] 배열을 출력하여 해결하시길 바랍니다.