삐까냥의 파도타기

4963번) 섬의 개수 - 그래프 본문

코딩/백준 알고리즘

4963번) 섬의 개수 - 그래프

금손형아 2017. 10. 28. 09:54

문제 출처 : https://www.acmicpc.net/problem/4963




import java.util.Scanner;


public class Q4963 {

static int[][] map;

static int maxY, maxX;

static Scanner sc;

public static void main(String[] args) {

sc = new Scanner(System.in);

int x = 0;

while ( (x = sc.nextInt()) != 0 ) {

setMap(x);

}

}

static void setMap(int x) {

maxX = x;

maxY = sc.nextInt();

map = new int[maxY][maxX];

for ( int i = 0; i < maxY; i++ ) {

for ( int j = 0; j < maxX; j++ ) {

map[i][j] = sc.nextInt();

}

}

int result = 0;

for ( int i = 0; i < maxY; i++ ) {

for ( int j = 0; j < maxX; j++ ) {

if ( map[i][j] == 1 ) {

result++;

searchLand(j, i);

}

}

}

System.out.println(result);

}

static void searchLand(int x, int y) {

map[y][x] = 0;

for ( int i = -1; i <= 1; i++ ) {

for ( int j = -1; j <= 1; j++ ) {

int tempX = x+j, tempY = y+i;

if ( tempY >= 0 && tempY < maxY && tempX >= 0 && tempX < maxX && map[tempY][tempX] == 1) {

searchLand(tempX, tempY);

}

}

}

}

}


'코딩 > 백준 알고리즘' 카테고리의 다른 글

5567번) 결혼식 - 그래프  (0) 2017.10.28
1068번) 트리 - 그래프  (0) 2017.10.28
1700번) 멀티탭 스케줄링 - 그리디  (0) 2017.10.27
1049번) 기타줄 - 그리디  (0) 2017.10.27
2875번) 대회 or 인턴 - 그리디  (0) 2017.10.27