main
[백준-4963번/Java] 섬의 개수 본문
* 재귀 함수를 사용하여 풀었다.
import java.util.*;
import java.io.*;
public class Main {
static int[][] map;
static int w;
static int h;
private static int landChecker(int i, int j) {// i - w , j - h
int count = 0;
try {
if (i < w && j < h && map[i][j] == 1) {
count = 1;
map[i][j] = 0;
landChecker(i - 1, j - 1);
landChecker(i , j - 1);
landChecker(i + 1, j - 1);
landChecker(i - 1, j);
landChecker(i + 1, j);
landChecker(i - 1, j + 1);
landChecker(i, j + 1);
landChecker(i + 1, j + 1);
}
} catch (ArrayIndexOutOfBoundsException e) {
// TODO: handle exception
}
return count;
}
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
w = sc.nextInt();
h = sc.nextInt();
if (w == 0 && h == 0)
break;
map = new int[w][h];
// 지도 저장
for (int j = 0; j < h; j++) {
for (int i = 0; i < w; i++) {
map[i][j] = sc.nextInt();
}
}
int island_cnt = 0;
// 섬 확인 (landChecker)
for (int j = 0; j < h; j++) {
for (int i = 0; i < w; i++) {
island_cnt += landChecker(i, j);
}
}
System.out.println(island_cnt);
}
sc.close();
}
}728x90
'Algorithm' 카테고리의 다른 글
| [백준-1193번/Java] 분수찾기 (0) | 2022.11.11 |
|---|---|
| [백준-10988번/Java] 팰린드롬인지 확인하기 (0) | 2022.11.11 |
| [백준-1316번/Java] 그룹 단어 체커 (0) | 2022.11.11 |
| [백준-5622번/Java] 다이얼 (0) | 2022.11.11 |
| [백준-1920번/Java] 수 찾기 (0) | 2022.11.11 |
Comments