๐ ๋ฌธ์
๐ ์์ด๋์ด
์์ ์ด๊ฐ ๋์ ์ ์๋ ํ์ดํ๋ผ์ธ์ ์ต๋ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ ๋ฌธ์ ์ ๋๋ค.
ํด๋น ๋ฌธ์ ๋ฅผ ์ฝ์ผ๋ฉด์ ๊ฐ์ฅ ๋ง์ ํ์ดํ๋ผ์ธ์ ์ฐ๊ฒฐํ๊ธฐ ์ํด์๋ ๊ฐ์ฅ ์์ชฝ์ ์๋๊ฒ์ด ์ต๋๊ฐ์ ๊ตฌํ๋๊ฒฝ์ฐ๋ผ ์๊ฐํ์ต๋๋ค.
๊ฐ์ ์๋๊ธธ์ ๋๊ฐ์ ์, ์,๋๊ฐ์ ์๋์ด๊ณ ๊ฐ ๊ธธ์ ๋ํ ํ์์ ์งํํฉ๋๋ค.
๊ฐ ๊ธธ์ ๊ฐ๋๊ฒฝ์ฐ ๊ฒฝ๋ก๊ฐ ๊ฐ๋ฅํ์ง ํ์ธํ๊ณ ๋ง์ฝ ๋ ธ์ ํ๋๊ฐ ์ฐ๊ฒฐ๋์ด true๋ฅผ ๋ฆฌํดํ๋ค๋ฉด ๋๋จธ์ง ๊ฒฝ๋ก์ ๋ํด์๋ ํ์ํ์ง ์๊ณ ๋ฆฌํดํฉ๋๋ค.
ํด๋น ๋ฌธ์ ์ ํฌ์ธํธ๋ ํ๋ฒ ๋ฐฉ๋ฌธํ๋ ๊ณณ์ ๋ค์ ๋ฐฉ๋ฌธํ์ง ์์๋ ๋๋ค๋๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ ์ด๋ค ํ ์ ์ ์ง์ ํ๋ ๊ฒฝ์ฐ ๋ฐ๋ก ํด๋น ์ ์ ๋ํ ๋ฐฉ๋ฌธ์ฒ๋ฆฌ๋ฅผ ์งํํฉ๋๋ค.
๐ ํ์ด
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class boj_3109_๋นต์ง {
private static char[][] map;
private static int row, col;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
st = new StringTokenizer(br.readLine());
row = Integer.parseInt(st.nextToken());
col = Integer.parseInt(st.nextToken());
map = new char[row][col];
for (int i = 0; i < row; i++) {
map[i] = br.readLine().toCharArray();
}
int cnt = 0;
for (int i = 0; i < row; i++) {
if (map[i][0] == 'x') continue;
if (dfs(0, i)) {
cnt++;
}
}
System.out.println(cnt);
}
private static boolean dfs(int y, int x) {
if (y == col - 1) {
return true;
} else {
//์ค๋ฅธ์ชฝ ์
map[x][y] = 'x'; //์ด์ฐจํผ ์ด๋ฏธ ๊ฐ๋ ๊ธธ์ด ์๋๋ ๊ฒฝ์ฐ๋ ๊ทธ ๊ธธ์ ๋ชป๊ฐ๋ ๊ฒฝ์ฐ์ด๊ธฐ์ ๋ฐฉ๋ฌธ ์ฒ๋ฆฌ ํ๋ค.
if (0 <= x - 1 && map[x - 1][y + 1] == '.') {
if (dfs(y + 1, x - 1)) {
return true;
}
}
//์
if (map[x][y + 1] == '.') {
if (dfs(y + 1, x)) return true;
}
//์ค๋ฅธ์ชฝ ์๋
if (x + 1 < row && map[x + 1][y + 1] == '.') {
if (dfs(y + 1, x + 1)) return true;
}
}
return false;
}
}
'๋ฐฑ์ค(boj)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JAVA]18869 ๋ฉํฐ๋ฒ์ค2 , ์ขํ์์ถ (0) | 2023.07.28 |
---|---|
[JAVA]1374 ๊ฐ์์ค (0) | 2023.07.16 |
[JAVA]1802 ์ข ์ด์ ๊ธฐ ๋ถํ ์ ๋ณต (0) | 2023.07.12 |
[JAVA]17829 222 ํ๋ง - ๋ถํ ์ ๋ณต (0) | 2023.07.12 |
[JAVA]2798 ๋ธ๋์ญ ์์ ํ์(์กฐํฉ) (0) | 2023.07.04 |