From 9f535548153c6ca28908a3e16ca756a64913b528 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EC=8B=A0=EC=A7=80?= <101992179+ksinji@users.noreply.github.com> Date: Fri, 7 Nov 2025 23:35:38 +0900 Subject: [PATCH] =?UTF-8?q?[20251107]=20PGM=20/=20LV2=20/=20=EB=AC=B4?= =?UTF-8?q?=EC=9D=B8=EB=8F=84=20=EC=97=AC=ED=96=89=20/=20=EA=B0=95?= =?UTF-8?q?=EC=8B=A0=EC=A7=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0\353\217\204 \354\227\254\355\226\211.md" | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 "ksinji/202511/7 PGM \353\254\264\354\235\270\353\217\204 \354\227\254\355\226\211.md" diff --git "a/ksinji/202511/7 PGM \353\254\264\354\235\270\353\217\204 \354\227\254\355\226\211.md" "b/ksinji/202511/7 PGM \353\254\264\354\235\270\353\217\204 \354\227\254\355\226\211.md" new file mode 100644 index 00000000..9df06e90 --- /dev/null +++ "b/ksinji/202511/7 PGM \353\254\264\354\235\270\353\217\204 \354\227\254\355\226\211.md" @@ -0,0 +1,46 @@ +```java +import java.util.*; + +class Solution { + static final int[] dx = {1,-1,0,0}; + static final int[] dy = {0,0,1,-1}; + + public int[] solution(String[] maps) { + int n = maps.length; + int m = maps[0].length(); + boolean[][] visited = new boolean[n][m]; + List ans = new ArrayList<>(); + + for (int i = 0; i < n; i++) { + for (int j = 0; j < m; j++) { + if (maps[i].charAt(j) == 'X' || visited[i][j]) continue; + + int sum = 0; + ArrayDeque q = new ArrayDeque<>(); + q.offer(new int[]{i, j}); + visited[i][j] = true; + + while (!q.isEmpty()) { + int[] cur = q.poll(); + int y = cur[0], x = cur[1]; + sum += maps[y].charAt(x) - '0'; + + for (int d = 0; d < 4; d++) { + int ny = y + dy[d], nx = x + dx[d]; + if (ny < 0 || nx < 0 || ny >= n || nx >= m) continue; + if (visited[ny][nx] || maps[ny].charAt(nx) == 'X') continue; + visited[ny][nx] = true; + q.offer(new int[]{ny, nx}); + } + } + ans.add(sum); + } + } + + if (ans.isEmpty()) return new int[]{-1}; + Collections.sort(ans); + return ans.stream().mapToInt(Integer::intValue).toArray(); + } +} + +```