Number of Islands
Updated:
이 문제는 백준의 섬 구하기? 문제랑 똑같은 문제이다
그 형태가 메소드 작성형태로 바뀐 문제이다
DFS 혹은 BFS를 이용하여, DFS와 BFS가 실행된 횟수를 반환하면 된다.
단 DFS와 BFS는 인접한 1인 곳만 갈수있다(동서남북으로)
by Java
class Solution {
int[] gox = {0,1,-1,0};
int[] goy = {1,0,0,-1};
public int numIslands(char[][] grid) {
if(grid.length==0) return 0;
int count=0;
boolean[][] visited = new boolean[grid.length][grid[0].length];
for(int i=0;i<grid.length;i++) {
for(int j=0;j<grid[i].length;j++) {
if(!visited[i][j] && grid[i][j]=='1') {
dfs(i,j,grid,visited,grid.length,grid[0].length);
count++;
}
}
}
return count;
}
private void dfs(int x,int y,char[][] board,boolean[][] visited,int n,int m) {
visited[x][y]=true;
for(int i=0;i<4;i++) {
int nx = x+gox[i], ny=y+goy[i];
if(nx<0 || nx>=n || ny<0 || ny>=m || visited[nx][ny] || board[nx][ny]=='0')continue;
dfs(nx,ny,board,visited,n,m);
}
}
}
Leave a comment