From df61930fa1cf8ed112861366f970934f64e16a9b Mon Sep 17 00:00:00 2001 From: nijesmik Date: Sat, 20 Apr 2024 22:03:45 +0900 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20DFS=EC=99=80=20BFS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "sejinkim/week16/DFS\354\231\200_BFS.java" | 67 ++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 "sejinkim/week16/DFS\354\231\200_BFS.java" diff --git "a/sejinkim/week16/DFS\354\231\200_BFS.java" "b/sejinkim/week16/DFS\354\231\200_BFS.java" new file mode 100644 index 0000000..ee74d23 --- /dev/null +++ "b/sejinkim/week16/DFS\354\231\200_BFS.java" @@ -0,0 +1,67 @@ +import java.util.*; + +public class DFS와_BFS { + static Node[] nodes; + static boolean[] visited; + static StringBuilder sb; + + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + int n = sc.nextInt(), e = sc.nextInt(), start = sc.nextInt(); + + nodes = new Node[n + 1]; + for (int i = 1; i <= n; i++) { + nodes[i] = new Node(); + } + + while (e-- > 0) { + int a = sc.nextInt(), b = sc.nextInt(); + nodes[a].next.add(b); + nodes[b].next.add(a); + } + + for (int i = 1; i <= n; i++) { + nodes[i].next.sort(Comparator.naturalOrder()); + } + + sb = new StringBuilder(); + visited = new boolean[n + 1]; + dfs(start); + + sb.append('\n'); + visited = new boolean[n + 1]; + bfs(start); + + System.out.println(sb); + } + + static void bfs(int start) { + Queue q = new LinkedList<>(); + visited[start] = true; + q.add(start); + while (!q.isEmpty()) { + int cur = q.poll(); + sb.append(cur).append(' '); + for (int i : nodes[cur].next) { + if (!visited[i]) { + visited[i] = true; + q.add(i); + } + } + } + } + + static void dfs(int cur) { + if (!visited[cur]) { + visited[cur] = true; + sb.append(cur).append(' '); + for (int i : nodes[cur].next) { + dfs(i); + } + } + } + + static class Node { + List next = new ArrayList<>(); + } +} \ No newline at end of file From eed44f267dd10c6330b7a0aaab82a66e3cdac019 Mon Sep 17 00:00:00 2001 From: nijesmik Date: Tue, 23 Apr 2024 00:11:23 +0900 Subject: [PATCH 2/3] =?UTF-8?q?feat:=20=EC=9D=B8=EC=8B=B8=EB=93=A4?= =?UTF-8?q?=EC=9D=98=20=EA=B0=80=EC=9C=84=EB=B0=94=EC=9C=84=EB=B3=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\353\260\224\354\234\204\353\263\264.java" | 105 ++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 "sejinkim/week16/\354\235\270\354\213\270\353\223\244\354\235\230_\352\260\200\354\234\204\353\260\224\354\234\204\353\263\264.java" diff --git "a/sejinkim/week16/\354\235\270\354\213\270\353\223\244\354\235\230_\352\260\200\354\234\204\353\260\224\354\234\204\353\263\264.java" "b/sejinkim/week16/\354\235\270\354\213\270\353\223\244\354\235\230_\352\260\200\354\234\204\353\260\224\354\234\204\353\263\264.java" new file mode 100644 index 0000000..83bee29 --- /dev/null +++ "b/sejinkim/week16/\354\235\270\354\213\270\353\223\244\354\235\230_\352\260\200\354\234\204\353\260\224\354\234\204\353\263\264.java" @@ -0,0 +1,105 @@ +import java.util.*; + +public class 인싸들의_가위바위보 { + static int n, k; + static int[][] gestures, scorecard; + + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + n = sc.nextInt(); + k = sc.nextInt(); + scorecard = new int[n][n]; + for (int i = 0; i < n; i++) { + for (int j = 0; j < n; j++) { + scorecard[i][j] = sc.nextInt(); + } + } + gestures = new int[3][20]; + for (int i = 1; i < n; i++) { + gestures[0][i] = i; + } + for (int i = 0; i < 20; i++) { + gestures[1][i] = sc.nextInt() - 1; + } + for (int i = 0; i < 20; i++) { + gestures[2][i] = sc.nextInt() - 1; + } + System.out.println(testAll()); + } + + static int testAll() { + do { + if (testOne() == 0) { + return 1; + } + } while (nextPermutation(gestures[0])); + return 0; + } + + static int testOne() { + Player[] playerInfo = new Player[3]; + for (int i = 0; i < 3; i++) { + playerInfo[i] = new Player(i); + } + int[] roundInfo = { 0, 1 }; + while (playerInfo[0].round < n) { + int winner = getWinner(playerInfo[roundInfo[0]], playerInfo[roundInfo[1]]); + if (playerInfo[winner].win() == k) { + return winner; + } + roundInfo[0] = 3 - roundInfo[0] - roundInfo[1]; + roundInfo[1] = winner; + } + return -1; + } + + static boolean nextPermutation(int[] arr) { + int top = n - 1; + while (top > 0 && arr[top - 1] > arr[top]) { + top--; + } + if (top == 0) { + return false; + } + int target = n - 1; + while (arr[top - 1] > arr[target]) { + target--; + } + swap(arr, top - 1, target); + target = n - 1; + while (top < target) { + swap(arr, top++, target--); + } + return true; + } + + static void swap(int[] arr, int i, int j) { + int tmp = arr[i]; + arr[i] = arr[j]; + arr[j] = tmp; + } + + static int getWinner(Player first, Player second) { + int result = scorecard[first.gesture()][second.gesture()]; + if (result == 2 || (result == 1 && first.id > second.id)) { + return first.id; + } + return second.id; + } + + static class Player { + int id, round, score; + + Player(int id) { + this.id = id; + } + + int win() { + return ++score; + } + + int gesture() { + return gestures[id][round++]; + } + } +} From 45e897ff04f78f490d8d22cefff7eaccd5fb1f5f Mon Sep 17 00:00:00 2001 From: nijesmik Date: Wed, 24 Apr 2024 19:55:11 +0900 Subject: [PATCH 3/3] =?UTF-8?q?feat:=20=EC=88=98=ED=95=99=EC=88=99?= =?UTF-8?q?=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\355\225\231\354\210\231\354\240\234.java" | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 "sejinkim/week16/\354\210\230\355\225\231\354\210\231\354\240\234.java" diff --git "a/sejinkim/week16/\354\210\230\355\225\231\354\210\231\354\240\234.java" "b/sejinkim/week16/\354\210\230\355\225\231\354\210\231\354\240\234.java" new file mode 100644 index 0000000..f00a65b --- /dev/null +++ "b/sejinkim/week16/\354\210\230\355\225\231\354\210\231\354\240\234.java" @@ -0,0 +1,24 @@ +import java.util.*; +import java.math.BigInteger; + +public class 수학숙제 { + + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + int n = sc.nextInt(); + PriorityQueue pq = new PriorityQueue<>(); + while (n-- > 0) { + String[] numbers = sc.next().split("[a-z]"); + for (String number : numbers) { + if (number.length() > 0) { + pq.add(new BigInteger(number)); + } + } + } + StringBuilder sb = new StringBuilder(); + while (!pq.isEmpty()) { + sb.append(pq.poll()).append('\n'); + } + System.out.println(sb); + } +}