Skip to content

Commit 1f1e29c

Browse files
authored
Merge pull request #763 from AlgorithmWithGod/suyeun84
[20250828] PGM / LV2 / 무인도 여행 / 김수연
2 parents 44ae41b + 3199f02 commit 1f1e29c

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
```java
2+
import java.util.*;
3+
class Solution {
4+
static int[][] map;
5+
static int N, M;
6+
static int[][] dir = new int[][] {{1,0}, {-1,0}, {0,1}, {0,-1}};
7+
public int[] solution(String[] maps) {
8+
List<Integer> sums = new ArrayList<>();
9+
N = maps.length;
10+
M = maps[0].length();
11+
map = new int[N][M];
12+
for (int i = 0; i < N; i++) {
13+
for (int j = 0; j < M; j++) {
14+
char temp = maps[i].charAt(j);
15+
if (temp == 'X') map[i][j] = 0;
16+
else map[i][j] = Integer.parseInt(temp+"");
17+
}
18+
}
19+
for (int i = 0; i < N; i++) {
20+
for (int j = 0; j < M; j++) {
21+
if (map[i][j] > 0) sums.add(bfs(i, j));
22+
}
23+
}
24+
if (sums.isEmpty()) return new int[]{-1};
25+
Collections.sort(sums);
26+
int[] answer = new int[sums.size()];
27+
for (int i = 0; i < sums.size(); i++) answer[i] = sums.get(i);
28+
return answer;
29+
}
30+
31+
static int bfs(int y, int x) {
32+
Queue<int[]> q = new LinkedList<>();
33+
q.offer(new int[] {y, x});
34+
int sum = map[y][x];
35+
map[y][x] = 0;
36+
while (!q.isEmpty()) {
37+
int[] cur = q.poll();
38+
for (int[] d : dir) {
39+
int ny = cur[0] + d[0];
40+
int nx = cur[1] + d[1];
41+
if (ny >= N || ny < 0 || nx >= M || nx < 0 || map[ny][nx] == 0) continue;
42+
q.offer(new int[] {ny, nx});
43+
sum += map[ny][nx];
44+
map[ny][nx] = 0;
45+
}
46+
}
47+
return sum;
48+
}
49+
}
50+
```

0 commit comments

Comments
 (0)