PS/BOJ
백준 1388 바닥장식 / JAVA
얍연구소장
2023. 5. 18. 22:58
https://www.acmicpc.net/problem/1388
1388번: 바닥 장식
형택이는 건축가이다. 지금 막 형택이는 형택이의 남자 친구 기훈이의 집을 막 완성시켰다. 형택이는 기훈이 방의 바닥 장식을 디자인했고, 이제 몇 개의 나무 판자가 필요한지 궁금해졌다. 나
www.acmicpc.net
> 풀이
/*
* 백준 1388 바닥장식
* #실버4
* #DFS
*/
public class boj_1388 {
static int N,M;
static char[][] arr;
static boolean[][] checked;
static int answer = 0;
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
arr = new char[N][M];
checked = new boolean[N][M];
for(int i = 0; i < N; i++) {
arr[i] = br.readLine().toCharArray();
}
for(int i = 0; i < N; i++) {
for(int j = 0; j < M; j++) {
if(!checked[i][j]) {
DFS(i,j);
}
}
}
System.out.println(answer);
}
public static void DFS(int x, int y) {
checked[x][y] = true;
if(arr[x][y] == '-') {
if(y == M-1) {
answer++;
return;
}
int ny = y + 1;
if(arr[x][ny] == '-' && !checked[x][ny]) {
DFS(x,ny);
} else {
answer++;
return;
}
}
if(arr[x][y] == '|') {
if(x == N-1) {
answer++;
return;
}
int nx = x + 1;
if(arr[nx][y] == '|' && !checked[nx][y]) {
DFS(nx,y);
} else {
answer++;
return;
}
}
}
}