1 ๋ถ„ ์†Œ์š”

๐Ÿ“ [G2_3109] ๋นต์ง‘

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    static StringTokenizer st;
    static boolean[][] visited;
    static int[][] arr;
    static int R, C;
    static int[] dx = {1, 1, 1};
    static int[] dy = {-1, 0, 1};
    // ํŒŒ์ดํ”„๋ผ์ธ์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜
    static int cnt;
    static int nx, ny;

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();

        st = new StringTokenizer(br.readLine(), " ");
        // ํ–‰
        R = Integer.parseInt(st.nextToken());
        // ์—ด
        C = Integer.parseInt(st.nextToken());

        arr = new int[R][C];

        // true๋ฉด ๊ฑด๋ฌผ์ด๋‚˜ ์ง€๋‚˜๊ฐ„ ์ž๋ฆฌ , false๋ฉด ์ง€๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์ž๋ฆฌ
        visited = new boolean[R + 1][C + 1];

        // ๋ฐฐ์—ด ์ž…๋ ฅ
        for (int i = 0; i < R; i++) {
            String str = br.readLine();
            for (int j = 0; j < C; j++) {
                arr[i][j] = str.charAt(j);
                if (arr[i][j] == 'x') {
                    visited[i][j] = true;
                }
            }
        }
        for (int i = 0; i < R; i++) {
            dfs(i, 0);
        }
        System.out.println(cnt);

    }

    static boolean dfs(int y, int x) {
        // ๊ธฐ์ €์กฐ๊ฑด : ๋์— ๋„์ฐฉํ•˜๋Š” ๊ฒฝ์šฐ ์นด์šดํŒ… ++
        if (x == C - 1) {
            cnt++;
            return true;
        }


        visited[y][0] = true;
        for (int z = 0; z < 3; z++) {
            nx = x + dx[z];
            ny = y + dy[z];


            //๋ชป๊ฐ
            if (nx < 0 || ny < 0 || ny >= R || visited[ny][nx] == true) {
                continue;
            }

            // ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ณณ
            if (!visited[ny][nx]) {
                visited[ny][nx] = true;
                if(dfs(ny, nx)){
                    return true;
                }
            }
        }
        return false;
    }
}

๐Ÿค” ๋‚˜์˜ ์ƒ๊ฐ

๋‚ด๊ฐ€ ์ƒ๊ฐํ•œ ์—ฌ๊ธฐ์„œ ํ‚คํฌ์ธํŠธ๋Š” ์ตœ๋Œ€์˜ ๊ฒฝ์šฐ๋ฅผ ๊ตฌํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅธ์ชฝ ์œ„ -> ์˜ค๋ฅธ์ชฝ -> ์˜ค๋ฅธ์ชฝ ์•„๋ž˜ ์ˆœ์œผ๋กœ ํƒ์ƒ‰์„ ํ•˜๋Š” ๊ฒƒ ์ด๋‹ค.
๊ทธ๋ฆฌ๊ณ  ํ–‰๋งˆ๋‹ค ๋‚˜๋ˆ ์„œ ํ•œ ์ค„์„ ๋๊นŒ์ง€ ๋‹ค ๊ฐ€๊ฒŒ ๋˜๋ฉด ๊ทธ ๊ณผ์ •์€ ๋์„ ๋‚ด๊ณ  ๋‹ค์‹œ ๋‹ค์Œ ํ–‰์œผ๋กœ ๊ฐ€์„œ ๊ฐ™์€ ๊ณผ์ •์„ ์ง„ํ–‰ํ•œ๋‹ค.
๊ธฐ์กด์— ๋ฐ˜ํ™˜๊ฐ’์„ void๋กœ ๋ฐ›์•„์„œ ๋ฉ”์„œ๋“œ๋ฅผ ๋๋‚ด์•ผํ•˜๋Š”๋ฐ ๊ทธ์ „ ๊ฐ’์œผ๋กœ ๋Œ์•„๊ฐ€์„œ ๋ฉ”์„œ๋“œ์—์„œ ๋‚˜์˜ฌ ์ˆ˜๊ฐ€ ์—†์–ด์„œ dfs ๋ฉ”์„œ๋“œ์˜ ๋ฐ˜ํ™˜๊ฐ’์„ boolean์œผ๋กœ ์„ค์ •ํ•˜์˜€๋Š”๋ฐ ์ด๊ฒƒ์ด ๋‚ด๊ฐ€ ๋Œ€๋ฉดํ•œ ๋ฌธ์ œ์˜ ํ•ด๊ฒฐ์ฑ…์ด ๋˜์—ˆ๋‹ค.
3๋ฐฉํ–ฅ ํƒ์ƒ‰๊ณผ ๊ฐ€์ง€์น˜๊ธฐ๋งŒ ์ž˜ํ•˜๋ฉด ๊ดœ์ฐฎ์•˜๋˜ ๋ฌธ์ œ์ด๋‹ค.

ํƒœ๊ทธ: , , ,

์นดํ…Œ๊ณ ๋ฆฌ:

์—…๋ฐ์ดํŠธ: