From 6bf87ceabf9a8a1b19efa5383950682a4a364862 Mon Sep 17 00:00:00 2001 From: LiiNi-coder <97495437+LiiNi-coder@users.noreply.github.com> Date: Fri, 22 Aug 2025 23:29:12 +0900 Subject: [PATCH] =?UTF-8?q?[20250822]=20PGM=20/=20LV2=20/=20=EC=A7=80?= =?UTF-8?q?=EA=B2=8C=EC=B0=A8=EC=99=80=20=ED=81=AC=EB=A0=88=EC=9D=B8=20/?= =?UTF-8?q?=20=EC=9D=B4=EC=9D=B8=ED=9D=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0 \355\201\254\353\240\210\354\235\270.md" | 113 ++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 "LiiNi-coder/202508/22 PGM \354\247\200\352\262\214\354\260\250\354\231\200 \355\201\254\353\240\210\354\235\270.md" diff --git "a/LiiNi-coder/202508/22 PGM \354\247\200\352\262\214\354\260\250\354\231\200 \355\201\254\353\240\210\354\235\270.md" "b/LiiNi-coder/202508/22 PGM \354\247\200\352\262\214\354\260\250\354\231\200 \355\201\254\353\240\210\354\235\270.md" new file mode 100644 index 00000000..40c7526d --- /dev/null +++ "b/LiiNi-coder/202508/22 PGM \354\247\200\352\262\214\354\260\250\354\231\200 \355\201\254\353\240\210\354\235\270.md" @@ -0,0 +1,113 @@ +```java +import java.util.*; + +class Solution { + static class Point{ + int r; + int c; + Point(int r, int c){ + this.r = r; + this.c = c; + } + Point translate(int dr, int dc){ + return new Point(r+dr, c+dc); + } + } + private static int[][] Drdcs = { + {0, 1}, + {1, 0}, + {0, -1}, + {-1, 0} + }; + private static int R; + private static int C; + private static int[][] Map; + private static HashMap> PointsOfId; + public int solution(String[] storages, String[] requests) { + C = storages[0].length(); + R = storages.length; + int answer = R*C; + Map = new int[R+2][C+2]; + PointsOfId = new HashMap>(); + for(int r = 0; r < R; r++){ + String storage = storages[r]; + for(int c = 0; c< C; c++){ + char cc = storage.charAt(c); + int id = cc - 'A' + 1; + var points = PointsOfId.get(id); + if(points == null){ + points = new LinkedList(); + PointsOfId.put(id, points); + } + points.add(new Point(r+1, c+1)); + Map[r+1][c+1] = id; + } + } + + Integer preTarget = null; + for(String request: requests){ + int target = request.charAt(0) - 'A'+1; + if(request.length() != 1){ + // for(Point p: PointsOfId.get(target)){ 런타임 에러!!!! + // Map[p.r][p.c] = 0; + // answer--; + // } + for(Point p: PointsOfId.getOrDefault(target, new LinkedList())){ + Map[p.r][p.c] = 0; + answer--; + } + continue; + } + var visited = new boolean[R+2][C+2]; + + var startP = new Point(0, 0); + visit(visited, startP); + var q = new ArrayDeque(); + q.offer(startP); + while(!q.isEmpty()){ + Point p = q.poll(); + for(int[] drdc: Drdcs){ + var nextP = p.translate(drdc[0], drdc[1]); + if(BC(nextP)) continue; + if(isVisit(visited, nextP)) continue; + if(getIdAt(nextP) == target){ + Map[nextP.r][nextP.c] = 0; + visit(visited, nextP); + }else if(getIdAt(nextP) == 0){ + visit(visited, nextP); + q.offer(nextP); + } + } + } + // p(Map); + // System.out.println(); + } + + int a2 = 0; + for(int r = 0; r= R+2 || c < 0 || c>=C+2; + } +} +```