inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

영리한 프로그래밍을 위한 알고리즘 강좌

Recursion의 응용 - 미로찾기 1

printMaze()는 어떻게 만들어야 할까요?

471

킨글

작성한 질문수 1

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;
        }
    }
}

algorithm

답변 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

jhmoon1994

print Maze()
-> 
for
(int i=0; i<maze.length; i++){
System.out.println(Arrays.toString(maze[i]));
}

0

킨글

질문을 올리고 나서 구글에 printMaze()를 검색해보니

printMaze() 함수는 maze[][]를 출력하는 것이더군요.

생각해보면 당연한 것인데 생각이 짧았습니다.

혹시 저와 같은 분이 있으면 maze[][] 배열을 출력하여 해결하시길 바랍니다.

1강 PDF 파일 오류

0

855

1

1강 pdf파일

0

549

0

혹시 코드로 구현하는 법은 안가르쳐 주시나요>?

-2

625

0

허프만 코딩에서 오타인가요?

0

357

0

강의 노이즈가 너무 심해요

0

392

0

왜 첫 글자를 떼놔야 하는지

0

343

0

red-black tree에 대한 질문입니다.

1

381

1

순차탐색: 다른버전 자바 코드 작성하는 중에 작성이 잘 안되서 질문드립니다.

0

296

1

compareTo 함수에 대한 질문입니다.

0

241

0

Anlatım dakika süreleri

0

224

0

강의자료 필요하신 분들은 여기 링크 참고해보세요.

32

553

3

binary search에서 질문

0

328

1

pdf에 있는 Excercise 답은 없나요?

4

257

0

pdf

0

267

0

include 배열에 대해 궁금한점이 있습니다!

0

224

0

연결요소

0

225

0

heap 정렬에서 배열 인덱스

0

224

0

Java에서의 정렬에서 정렬된 값 출력 방법

0

367

2

MAX-HEAPIFY(A,1)

0

355

1

Python 으로 구현해보았습니다.

1

243

0

동서남북 순서

1

242

1

해당 강좌에 대한 pdf는 다운받지 못하는건가요 ??

0

279

1

이 강의 ppt 자료는 다운받을 수 없나요?

0

202

0

C언어로 quicksort 구현 해봤는데 안되네요ㅠㅜ 왜 그런걸까요?

0

221

0