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;
}
}
'์๊ณ ๋ฆฌ์ฆ > ์ฝ๋ฉํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BJ] 1987๋ฒ: ์ํ๋ฒณ(Java) (0) | 2022.08.30 |
---|---|
[BJ] 1206: DFS์ BFS(Java) (0) | 2022.08.30 |
[SWEA] 1247๋ฒ: ์ต์ ๊ฒฝ๋ก(Java) (0) | 2022.08.30 |
[์ ์ฌ] 1828: ๋์ฅ๊ณ (Java) (0) | 2022.08.30 |
[BJ] 1541๋ฒ: ์์ด๋ฒ๋ฆฐ ๊ดํธ(Java) (0) | 2022.08.30 |