From 03dcb753154b103f3a8a92a61e3bf2919ff08ba3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=AA=85=EC=A4=80?= <86913355+mjj111@users.noreply.github.com> Date: Thu, 30 May 2024 22:40:35 +0900 Subject: [PATCH 1/2] 2024-05-30 --- ...\352\263\274\353\212\221\353\214\200.java" | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 "mjj111/graph/\354\226\221\352\263\274\353\212\221\353\214\200.java" diff --git "a/mjj111/graph/\354\226\221\352\263\274\353\212\221\353\214\200.java" "b/mjj111/graph/\354\226\221\352\263\274\353\212\221\353\214\200.java" new file mode 100644 index 0000000..036ab0c --- /dev/null +++ "b/mjj111/graph/\354\226\221\352\263\274\353\212\221\353\214\200.java" @@ -0,0 +1,39 @@ +import java.util.*; + +class 양과늑대 { + + int[][] edges; + int[] info; + int maxSheepCnt = 0; + + public int solution(int[] Info, int[][] Edges) { + info = Info; + edges = Edges; + dfs(0, 0, 0, new HashSet()); + return maxSheepCnt; + } + + private void dfs(int now, int sheepCnt, int wolfCnt, Set nexts) { + if (info[now] == 0) sheepCnt++; + else wolfCnt++; + + if (wolfCnt >= sheepCnt) return; + maxSheepCnt = Math.max(sheepCnt, maxSheepCnt); + + // 다음 탐색 위치 복사 + Set copySet = new HashSet<>(nexts); + + // 다음 탐색 목록중 현재 위치제외 + copySet.remove(now); + + for(int[] edge : edges) { + int start = edge[0]; + int end = edge[1]; + if(start == now) copySet.add(end); + } + + for (int next : copySet) { + dfs(next, sheepCnt, wolfCnt, copySet); + } + } +} From 58868524664b0568fd2f1ab589ec917bab214f3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=AA=85=EC=A4=80?= <86913355+mjj111@users.noreply.github.com> Date: Thu, 30 May 2024 22:40:48 +0900 Subject: [PATCH 2/2] 2024-05-30 --- ...\355\221\234\355\216\270\354\247\221.java" | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 "mjj111/implement/\355\221\234\355\216\270\354\247\221.java" diff --git "a/mjj111/implement/\355\221\234\355\216\270\354\247\221.java" "b/mjj111/implement/\355\221\234\355\216\270\354\247\221.java" new file mode 100644 index 0000000..3f30a24 --- /dev/null +++ "b/mjj111/implement/\355\221\234\355\216\270\354\247\221.java" @@ -0,0 +1,44 @@ +import java.util.*; + +class 표편집 { + public String solution(int n, int k, String[] cmd) { + Stack cancels = new Stack<>(); + int now = k; + int totalRows = n; + + for (String c : cmd) { + if (c.charAt(0) == 'U') { + int value = Integer.parseInt(c.split(" ")[1]); + now -= value; + continue; + } + if (c.charAt(0) == 'D') { + int value = Integer.parseInt(c.split(" ")[1]); + now += value; + continue; + } + if (c.charAt(0) == 'C') { + cancels.push(now); + totalRows--; + if (now == totalRows) now--; + continue; + } + if (c.charAt(0) == 'Z') { + int cancelledRow = cancels.pop(); + if (cancelledRow <= now) now++; + totalRows++; + } + } + + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < totalRows; i++) { + sb.append("O"); + } + + while (!cancels.isEmpty()) { + sb.insert(cancels.pop().intValue(), "X"); + } + + return sb.toString(); + } +}