32. 섬의 개수
https://leetcode.com/problems/top-k-frequent-elements/
📌문제
1을 육지로 0을 물로 가정한 2D 그리드 맵이 주어졌을 때, 섬의 개수를 계산해라.
- 예제1
📝입력
Input: grid = [
["1","1","1","1","0"],
["1","1","0","1","0"],
["1","1","0","0","0"],
["0","0","0","0","0"]
]
💻출력
Output: 1
📌풀이
5ms, 51.4mb
class Solution {
static boolean[][] visited;
static int[] dx = {0, 0, 1, -1};
static int[] dy = {1, -1, 0, 0};
public int numIslands(char[][] grid) {
int answer = 0;
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(grid[i][j] == '1' && !visited[i][j]){
answer++;
dfs(j, i, grid);
}
}
}
return answer;
}
public static void dfs(int x, int y, char[][] map){
visited[y][x] = true;
for(int i = 0; i < dx.length; i++){
int nx = x + dx[i];
int ny = y + dy[i];
if(nx < 0 || ny < 0 || nx >= map[0].length || ny >= map.length || visited[ny][nx]) continue;
if(map[ny][nx] == '1'){
dfs(nx , ny, map);
}
}
}
}
'Algorithm > PTUStudy' 카테고리의 다른 글
14주차. 문자열 분석 (0) | 2023.05.05 |
---|---|
14주차. 알파벳 찾기 (0) | 2023.05.05 |
13주차. 알파벳 개수 (0) | 2023.04.29 |
13주차. 후위표기식 (0) | 2023.04.28 |
13주차. 해시 테이블(상위 K 빈도 요소) (0) | 2023.04.27 |