반응형
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[] dx = new int[]{1, 0 , -1, 0};
int[] dy = new int[]{0, 1, 0, -1};
int[] nm = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
String[][] field = new String[nm[0]][nm[1]];
boolean[][] visited = new boolean[nm[0]][nm[1]];
for (int i=0; i<nm[0]; i++) field[i] = br.readLine().split(" ");
int num=0, max=0;
for (int i=0; i<nm[0]; i++){
for (int j=0; j<nm[1]; j++){
if (field[i][j].equals("0") || visited[i][j]) continue;
num++;
ArrayList<int[]> Q = new ArrayList<>();
visited[i][j] = true;
Q.add(new int[]{i, j});
int area = 0;
while (!Q.isEmpty()){
area++;
int[] cur = Q.remove(0);
for (int dir = 0; dir<4; dir++){
int nx = cur[1] + dx[dir];
int ny = cur[0] + dy[dir];
if (nx<0 || nx>=nm[1] || ny<0 || ny>=nm[0]) continue;
if (visited[ny][nx] || !field[ny][nx].equals("1")) continue;
visited[ny][nx] = true;
Q.add(new int[]{ny, nx});
}
}
max = Math.max(max, area);
}
}
System.out.print(num+"\n"+max);
}
}
반응형
'Algorithm' 카테고리의 다른 글
백준 2178번 미로 탐색 [ Java ] (0) | 2020.12.29 |
---|---|
백준 15688번 수 정렬하기 5 [ Java ] (0) | 2020.12.29 |
백준 5988번 홀수일까 짝수일까 [ Java ] (0) | 2020.12.28 |
백준 16673번 고려대학교에는 공식 와인이 있다 [ Java ] (0) | 2020.12.28 |
백준 10799번 쇠막대기 [ Java ] (0) | 2020.12.28 |