View

๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

์œ ๋ช…ํ•œ ์ œ๋นต์‚ฌ ๊น€์›์›…์€ ๋นต์ง‘์„ ์šด์˜ํ•˜๊ณ  ์žˆ๋‹ค. ์›์›…์ด์˜ ๋นต์ง‘์€ ๊ธ€๋กœ๋ฒŒ ์žฌ์ • ์œ„๊ธฐ๋ฅผ ํ”ผํ•ด๊ฐ€์ง€ ๋ชปํ–ˆ๊ณ , ๊ฒฐ๊ตญ ์‹ฌ๊ฐํ•œ ์žฌ์ • ์œ„๊ธฐ์— ๋น ์กŒ๋‹ค.

์›์›…์ด๋Š” ์ง€์ถœ์„ ์ค„์ด๊ณ ์ž ์—ฌ๊ธฐ์ €๊ธฐ ์ง€์ถœ์„ ์‚ดํŽด๋ณด๋˜ ์ค‘์—, ๊ฐ€์Šค๋น„๊ฐ€ ์ œ์ผ ํฌ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ๋˜์—ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์›์›…์ด๋Š” ๊ทผ์ฒ˜ ๋นต์ง‘์˜ ๊ฐ€์Šค๊ด€์— ๋ชฐ๋ž˜ ํŒŒ์ดํ”„๋ฅผ ์„ค์น˜ํ•ด ํ›”์ณ์„œ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค.

๋นต์ง‘์ด ์žˆ๋Š” ๊ณณ์€ R*C ๊ฒฉ์ž๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฒซ์งธ ์—ด์€ ๊ทผ์ฒ˜ ๋นต์ง‘์˜ ๊ฐ€์Šค๊ด€์ด๊ณ , ๋งˆ์ง€๋ง‰ ์—ด์€ ์›์›…์ด์˜ ๋นต์ง‘์ด๋‹ค.

์›์›…์ด๋Š” ๊ฐ€์Šค๊ด€๊ณผ ๋นต์ง‘์„ ์—ฐ๊ฒฐํ•˜๋Š” ํŒŒ์ดํ”„๋ฅผ ์„ค์น˜ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ๋นต์ง‘๊ณผ ๊ฐ€์Šค๊ด€ ์‚ฌ์ด์—๋Š” ๊ฑด๋ฌผ์ด ์žˆ์„ ์ˆ˜๋„ ์žˆ๋‹ค. ๊ฑด๋ฌผ์ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ํŒŒ์ดํ”„๋ฅผ ๋†“์„ ์ˆ˜ ์—†๋‹ค.

๊ฐ€์Šค๊ด€๊ณผ ๋นต์ง‘์„ ์—ฐ๊ฒฐํ•˜๋Š” ๋ชจ๋“  ํŒŒ์ดํ”„๋ผ์ธ์€ ์ฒซ์งธ ์—ด์—์„œ ์‹œ์ž‘ํ•ด์•ผ ํ•˜๊ณ , ๋งˆ์ง€๋ง‰ ์—ด์—์„œ ๋๋‚˜์•ผ ํ•œ๋‹ค. ๊ฐ ์นธ์€ ์˜ค๋ฅธ์ชฝ, ์˜ค๋ฅธ์ชฝ ์œ„ ๋Œ€๊ฐ์„ , ์˜ค๋ฅธ์ชฝ ์•„๋ž˜ ๋Œ€๊ฐ์„ ์œผ๋กœ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๊ณ , ๊ฐ ์นธ์˜ ์ค‘์‹ฌ๋ผ๋ฆฌ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์›์›…์ด๋Š” ๊ฐ€์Šค๋ฅผ ๋˜๋„๋ก ๋งŽ์ด ํ›”์น˜๋ ค๊ณ  ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ, ๊ฐ€์Šค๊ด€๊ณผ ๋นต์ง‘์„ ์—ฐ๊ฒฐํ•˜๋Š” ํŒŒ์ดํ”„๋ผ์ธ์„ ์—ฌ๋Ÿฌ ๊ฐœ ์„ค์น˜ํ•  ๊ฒƒ์ด๋‹ค. ์ด ๊ฒฝ๋กœ๋Š” ๊ฒน์น  ์ˆ˜ ์—†๊ณ , ์„œ๋กœ ์ ‘ํ•  ์ˆ˜๋„ ์—†๋‹ค. ์ฆ‰, ๊ฐ ์นธ์„ ์ง€๋‚˜๋Š” ํŒŒ์ดํ”„๋Š” ํ•˜๋‚˜์ด์–ด์•ผ ํ•œ๋‹ค.

์›์›…์ด ๋นต์ง‘์˜ ๋ชจ์Šต์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์›์›…์ด๊ฐ€ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์Šค๊ด€๊ณผ ๋นต์ง‘์„ ์—ฐ๊ฒฐํ•˜๋Š” ํŒŒ์ดํ”„๋ผ์ธ์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— R๊ณผ C๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 โ‰ค R โ‰ค 10,000, 5 โ‰ค C โ‰ค 500)

๋‹ค์Œ R๊ฐœ ์ค„์—๋Š” ๋นต์ง‘ ๊ทผ์ฒ˜์˜ ๋ชจ์Šต์ด ์ฃผ์–ด์ง„๋‹ค. '.'๋Š” ๋นˆ ์นธ์ด๊ณ , 'x'๋Š” ๊ฑด๋ฌผ์ด๋‹ค. ์ฒ˜์Œ๊ณผ ๋งˆ์ง€๋ง‰ ์—ด์€ ํ•ญ์ƒ ๋น„์–ด์žˆ๋‹ค.

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ์›์›…์ด๊ฐ€ ๋†“์„ ์ˆ˜ ์žˆ๋Š” ํŒŒ์ดํ”„๋ผ์ธ์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

์˜ˆ์ œ ์ž…๋ ฅ 1

5 5
.xx..
..x..
.....
...x.
...x.

์˜ˆ์ œ ์ถœ๋ ฅ 1

2

์žฌ๊ท€๋ฅผ ์ด์šฉํ•ด์„œ ํ’€์—ˆ์Œ

๋ฌธ์ œ์—์„œ ์ค€ ํžŒํŠธ๋ฅผ ๋ณด๋ฉด ํ•œ ์ •์ ์˜ ์˜ค๋ฅธ์ชฝ ์œ„ , ์˜ค๋ฅธ์ชฝ ์•„๋ž˜, ์˜ค๋ฅธ์ชฝ ๊ฐ€์šด๋ฐ๊ฐ€ ๋šค๋ ค์žˆ์„ ๋•Œ ๋น„๋กœ์†Œ ์˜† ์นธ์œผ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค


๐Ÿคฆโ€โ™€๏ธ My Solution

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

public class BJ_3109 {

    static int R;
    static int C;
    static char[][] arr;

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        R = Integer.parseInt(st.nextToken());
        C = Integer.parseInt(st.nextToken());
        arr = new char[R][C];
        for (int i = 0; i < R; i++)
            arr[i] = br.readLine().toCharArray(); // ํ•œ์ค„๋กœ ์ฝ์–ด์„œ ์ด๋ฅผ ํ•˜๋‚˜์”ฉ char๋กœ ๋ณ€ํ™˜

        int cnt = 0;
        for (int i = 0; i < R; i++) {
            if (checkRoad(i, 0))
                cnt += 1;
        }
        System.out.println(cnt);
    }

    public static boolean checkRoad(int x, int y) {
        arr[x][y] = '0';
        for (int i = 0; i < R; i++) {
            for (int j = 0; j < C; j++) {
                System.out.print(arr[i][j] + " ");
            }
            System.out.println();
        }

        // ๋นต์ง‘์— ๋„์ฐฉ
        if (y == C - 1)
            return true;

        // ์˜ค๋ฅธ์ชฝ ์œ„
        if (x - 1 >= 0 && arr[x - 1][y + 1] == '.') {
            if (checkRoad(x - 1, y + 1)) {
                return true;
            }
        }
        // ์˜ค๋ฅธ์ชฝ ๊ฐ€์šด๋ฐ
        if (arr[x][y + 1] == '.') // ์˜ค๋ฅธ์ชฝ
            if (checkRoad(x, y + 1))
                return true;
        // ์˜ค๋ฅธ์ชฝ ์•„๋ž˜
        if (x + 1 < R && arr[x + 1][y + 1] == '.') // ์˜ค๋ฅธ์ชฝ ์•„๋ž˜
            if (checkRoad(x + 1, y + 1))
                return true;
        return false;
    }

}

๋ฐ˜์‘ํ˜•
Share Link
reply
๋ฐ˜์‘ํ˜•
ยซ   2024/11   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30