νμ΄
DFSλ₯Ό ν΅ν΄ νμμ μ§νν λ μ΅λκ°μ μ°Ύλ κ²½μ°λ λλΆλΆ λͺ¨λ κ²½μ°μ μλ₯Ό νμΈν΄μΌ νκΈ° λλ¬Έμ μ λ§νμ§ μμ κ²½μ° κ°μ§μΉκΈ°νλ λ°±νΈλνΉ λ°©λ²μ μ¬μ©ν μ μλ€. νμ§λ§ μ΄ λ¬Έμ λ μμ μ μ κ°μ₯ μμμλΆν° μ°κ²°ν μ μλ κ²½μ°μλ μ°κ²°νλ κ²½μ°κ° μ΅μ μ λ°©λ²μ΄ λλ 그리λν μ κ·Ό λ°©μμ μ¬μ©νμκ³ μ΄λ₯Ό ν΅ν΄ μ λ§νμ§ μμ κ²½μ° νμμ μ’ λ£νλ κ²½μ° λλμκ°λ λ°±νΈλνΉ λ°©μμ μ¬μ©νμλ€.
첫λ²μ¨° μ΄μ 1λ²μ¨° νλΆν° νμμ μ§ννκ³ , λ§μ½ Cλ²μ§Έ νμ λμ°©νλ€λ©΄ μ΄λ² μμ μμΉμμμ νμμ μ’ λ£νλ€. λ€μ μμΉλ λμΌνκ² μ§ννλλ° λ§μ½ μ€ν¨νλ€κ³ νλλΌλ λ°©λ¬Έν μμΉμ λν 체ν¬λ₯Ό λλλ¦¬μ§ μλλ€. μλνλ©΄ ν΄λΉ μμΉμμ νμ΄νλ₯Ό μμ±νμ§ λͺ»νλ€κ³ νλλΌλ λ€ μ νμ§μμ ν΄λΉ λ°©ν₯μ λμΌνκ² μ€ν¨νλ κ²½μ°κ° λκΈ° λλ¬Έμ΄λ€.
κ·Έλ¦¬κ³ μ€μν λΆλΆμ νμμ μμκ° μ => μ€κ° => μλ μμλ‘ μ§νλμ΄μΌμ§λ§ μ΅μ μ κ²½μ°λ₯Ό μ°Ύκ² λλ€λ λΆλΆμ΄λ€.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Solution3109 {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static char[][] map;
static boolean[][] check;
static int R, C, cnt, max = Integer.MIN_VALUE;
static boolean isReached;
public static void main(String[] args) throws IOException {
String[] input = br.readLine().split(" ");
R = Integer.parseInt(input[0]);
C = Integer.parseInt(input[1]);
map = new char[R][C];
check = new boolean[R][C];
for (int i = 0; i < R; i++) {
char[] line = br.readLine().toCharArray();
for (int j = 0; j < C; j++) {
map[i][j] = line[j];
}
}
for (int i = 0; i < R; i++) {
if (isReached) continue;
isReached = false;
buildPipe(i, 0);
if (isReached) {
isReached = false;
cnt++;
}
}
System.out.println(cnt);
}
static void buildPipe(int row, int col) {
if (col == C - 1) {
isReached = true;
return;
}
check[row][col] = true;
if (isvalid(row - 1, col + 1) && !isReached)
buildPipe(row - 1, col + 1);
if (isvalid(row, col + 1) && !isReached)
buildPipe(row, col + 1);
if (isvalid(row + 1, col + 1) && !isReached)
buildPipe(row + 1, col + 1);
}
static boolean isvalid(int row, int col) {
if (row < 0 || row >= R || map[row][col] == 'x' || check[row][col])
return false;
return true;
}
}
'π Algorithm > π» λ¬Έμ νμ΄' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€] 1967. νΈλ¦¬μ μ§λ¦ (0) | 2021.03.06 |
---|---|
[λ°±μ€] 1987. μνλ²³ (0) | 2021.02.19 |
[λ°±μ€] 15686. μΉν¨ λ°°λ¬ (0) | 2021.02.19 |
[λ°±μ€] 9251. LCS (0) | 2021.02.10 |
[λ°±μ€] 11053. κ°μ₯ κΈ΄ μ¦κ°νλ λΆλΆ μμ΄ (0) | 2021.02.10 |
λκΈ