반응형
Notice
Recent Posts
Recent Comments
Link
지구정복
[BFS,DFS] 이코테 - 음료수 얼려 먹기 본문
728x90
반응형
-자바
package bfs_dfs;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Juice_ice1 {
private static BufferedWriter bw = new BufferedWriter( new OutputStreamWriter(System.out));
private static int n, m; //행렬 길이
private static int[][] arr;
private static boolean dfs(int i, int j) {
//i와 j가 주어진 범위를 벗어나면 종료
if( i <= -1 || i >= n || j <= -1 || j >= m ) {
return false;
}
if( arr[i][j] == 0 ) {
//해당노드 방문처리
arr[i][j] = 1;
//상하좌우 모두 재귀적으로 dfs메서드 호출하기
dfs( i+1, j );
dfs( i-1, j );
dfs( i, j-1 );
dfs( i, j+1 );
return true;
}
return false;
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader( new InputStreamReader( System.in ) );
StringTokenizer st;
int answer = 0;
st = new StringTokenizer( br.readLine() );
n = Integer.parseInt( st.nextToken() ); //행의 길이
m = Integer.parseInt( st.nextToken() ); //열의 길이
arr = new int[n][m]; //얼을틀 행렬 초기화
for( int i=0; i<n; i++ ) {
String tmp1 = br.readLine();
String[] tmp2 = tmp1.split( "" );
for( int j=0; j<m; j++ ) {
arr[i][j] = Integer.parseInt( tmp2[j] );
}
}
for( int i=0; i<n; i++ ) {
for( int j=0; j<m; j++ ) {
if ( dfs(i, j) == true ) {
answer++;
}
}
}
bw.write( String.valueOf(answer) );
bw.flush();
}//메인메서드 끝
}
728x90
반응형
'데이터 엔지니어링 정복 > Algorithm' 카테고리의 다른 글
[BFS,DFS] 백준 - 연결요소의 개수 (0) | 2021.07.07 |
---|---|
[BFS,DFS] 이코테 - 미로탈출 (0) | 2021.07.06 |
[BFS,DFS] 백준 - 바닥장식 (0) | 2021.07.05 |
[BFS,DFS] 백준 - 바이러스 (0) | 2021.06.25 |
[BFS,DFS] 백준 - DFS와 BFS (0) | 2021.06.25 |
Comments