반응형
https://www.acmicpc.net/problem/4963
import java.io.*;
import java.util.*;
import java.time.*;
public class Main {
static int[] dx = {-1, 1, 0, 0,-1, 1, -1, 1};
static int[] dy = { 0, 0,-1, 1, 1, 1, -1,-1};
static int w,h,cnt;
static int[][]map;
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while(true) {
w = sc.nextInt(); //지도 너비
h = sc.nextInt(); //지도 높이
if(w==0&&h==0)
break;
map = new int[h][w]; //지도
for(int i=0;i<h;i++) {
for(int j=0;j<w;j++) {
map[i][j]=sc.nextInt();
}
}
findIsland();
}
}// main()
static void findIsland() {
boolean[][] check = new boolean[h][w];
cnt=0;
for(int i=0;i<h;i++) {
for(int j=0;j<w;j++) {
if(map[i][j]==1&&!check[i][j]) { //섬이고 방문한적 없을 때
dfs(i,j,check);
cnt++;
}
}
}
System.out.println(cnt);
}//findIsland()
static void dfs(int x,int y,boolean[][] check) {
check[x][y]=true;
for(int i=0;i<8;i++) {
int tX=x+dx[i];
int tY=y+dy[i];
if(tX>=0 && tY>=0 &&tX<h&&tY<w) { //지도의 범위 내에서
if(!check[tX][tY]&&map[tX][tY]==1) { //방문한적이 없고, 섬일때
dfs(tX,tY,check);
}
}
}
}//dfs()
}// class Main
728x90
반응형
'코딩테스트 > 백준' 카테고리의 다른 글
백준 1182 : 부분수열의 합 _자바 Java (0) | 2023.01.28 |
---|---|
백준 10799 : 쇠막대기 _자바 Java (0) | 2023.01.28 |
백준 11279 : 최대 힙 _자바 Java (0) | 2023.01.26 |
백준 1927 : 최소 힙 _자바 Java (0) | 2023.01.26 |
백준 10699 : 오늘 날짜 _자바 Java (1) | 2023.01.25 |
댓글