🌷🌼λͺ¨μ—¬λ΄μš” 개발의숲🌷🌼

[JAVA/μ½”λ”©ν…ŒμŠ€νŠΈ] λ―Έλ‘œνƒμƒ‰(DFS) λ³Έλ¬Έ

개발/μ•Œκ³ λ¦¬μ¦˜ λ¬Έμ œν’€μ΄ JAVA

[JAVA/μ½”λ”©ν…ŒμŠ€νŠΈ] λ―Έλ‘œνƒμƒ‰(DFS)

μš”μΌμ΄ 2022. 3. 18. 17:34
λ°˜μ‘ν˜•

문제

7*7 격자판 미둜λ₯Ό νƒˆμΆœν•˜λŠ” 경둜의 κ°€μ§€μˆ˜λ₯Ό 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ„Έμš”.

μΆœλ°œμ μ€ 격자의 (1, 1) μ’Œν‘œμ΄κ³ , νƒˆμΆœ 도착점은 (7, 7)μ’Œν‘œμ΄λ‹€. 격자판의 1은 벽이고, 0은 ν†΅λ‘œμ΄λ‹€.

격자판의 μ›€μ§μž„μ€ μƒν•˜μ’Œμš°λ‘œλ§Œ 움직인닀. λ―Έλ‘œκ°€ λ‹€μŒκ³Ό κ°™λ‹€λ©΄

μœ„μ˜ μ§€λ„μ—μ„œ μΆœλ°œμ μ—μ„œ λ„μ°©μ κΉŒμ§€ 갈 수 μžˆλŠ” λ°©λ²•μ˜ μˆ˜λŠ” 8가지이닀.

μž…λ ₯

7*7 격자판의 정보가 μ£Όμ–΄μ§‘λ‹ˆλ‹€.

좜λ ₯

첫 번째 쀄에 경둜의 κ°€μ§€μˆ˜λ₯Ό 좜λ ₯ν•œλ‹€.

μ˜ˆμ‹œ μž…λ ₯ 1

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

8

 

 

import java.util.*;

public class Main {

    static int[] disX = {0, 1, 0, -1};
    static int[] disY = {1, 0, -1, 0};
    static int[][] array;
    static int answer = 0;

    public void DFS(int x, int y){

        if(x<0 || x>6 || y<0 || y>6){
            return;
        }

        if(array[x][y] == 1){
            return;
        }

        if(x == 6 && y == 6){
            answer ++;
        }else{
            for(int i=0; i<4; i++){
                array[x][y] = 1;
                DFS(x+disX[i], y+disY[i]);
                array[x][y] = 0;
            }
        }

    }

    public void solution(int n, int r){

        DFS(n, r);

        System.out.println(answer);
    }

    public static void main(String[] args) {

        Main main = new Main();

        Scanner in = new Scanner(System.in);

        array = new int[7][7];

        for(int i=0; i<7; i++){
            for(int j=0; j<7; j++){
                array[i][j] = in.nextInt();
            }
        }

        main.solution(0, 0);

    }
}

 

 

Comments