From 0c878d25641cfef637666ccd39e1782bceb2277d Mon Sep 17 00:00:00 2001 From: sunghyuki Date: Fri, 18 Feb 2022 18:27:20 +0900 Subject: [PATCH 1/8] =?UTF-8?q?Boj15649=20N=EA=B3=BC=20M=20(1)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Brute-Force/Blackjack.java | 0 Bulk.java => kikat/Brute-Force/Bulk.java | 0 .../Brute-Force/Director.java | 0 .../Brute-Force/DivideAndMerge.java | 0 .../Brute-Force/DomitoryFloor.java | 0 .../Brute-Force/Doubles.java | 0 .../Brute-Force/OneNumber.java | 0 README.md => kikat/Brute-Force/README.md | 0 .../Brute-Force/RepaintChessBoard.java | 0 .../Brute-Force/ReverseGuGuDan.java | 0 .../Permutation and Combination/NandMOne.java | 42 +++++++++++++++++++ 11 files changed, 42 insertions(+) rename Blackjack.java => kikat/Brute-Force/Blackjack.java (100%) rename Bulk.java => kikat/Brute-Force/Bulk.java (100%) rename Director.java => kikat/Brute-Force/Director.java (100%) rename DivideAndMerge.java => kikat/Brute-Force/DivideAndMerge.java (100%) rename DomitoryFloor.java => kikat/Brute-Force/DomitoryFloor.java (100%) rename Doubles.java => kikat/Brute-Force/Doubles.java (100%) rename OneNumber.java => kikat/Brute-Force/OneNumber.java (100%) rename README.md => kikat/Brute-Force/README.md (100%) rename RepaintChessBoard.java => kikat/Brute-Force/RepaintChessBoard.java (100%) rename ReverseGuGuDan.java => kikat/Brute-Force/ReverseGuGuDan.java (100%) create mode 100644 kikat/Permutation and Combination/NandMOne.java diff --git a/Blackjack.java b/kikat/Brute-Force/Blackjack.java similarity index 100% rename from Blackjack.java rename to kikat/Brute-Force/Blackjack.java diff --git a/Bulk.java b/kikat/Brute-Force/Bulk.java similarity index 100% rename from Bulk.java rename to kikat/Brute-Force/Bulk.java diff --git a/Director.java b/kikat/Brute-Force/Director.java similarity index 100% rename from Director.java rename to kikat/Brute-Force/Director.java diff --git a/DivideAndMerge.java b/kikat/Brute-Force/DivideAndMerge.java similarity index 100% rename from DivideAndMerge.java rename to kikat/Brute-Force/DivideAndMerge.java diff --git a/DomitoryFloor.java b/kikat/Brute-Force/DomitoryFloor.java similarity index 100% rename from DomitoryFloor.java rename to kikat/Brute-Force/DomitoryFloor.java diff --git a/Doubles.java b/kikat/Brute-Force/Doubles.java similarity index 100% rename from Doubles.java rename to kikat/Brute-Force/Doubles.java diff --git a/OneNumber.java b/kikat/Brute-Force/OneNumber.java similarity index 100% rename from OneNumber.java rename to kikat/Brute-Force/OneNumber.java diff --git a/README.md b/kikat/Brute-Force/README.md similarity index 100% rename from README.md rename to kikat/Brute-Force/README.md diff --git a/RepaintChessBoard.java b/kikat/Brute-Force/RepaintChessBoard.java similarity index 100% rename from RepaintChessBoard.java rename to kikat/Brute-Force/RepaintChessBoard.java diff --git a/ReverseGuGuDan.java b/kikat/Brute-Force/ReverseGuGuDan.java similarity index 100% rename from ReverseGuGuDan.java rename to kikat/Brute-Force/ReverseGuGuDan.java diff --git a/kikat/Permutation and Combination/NandMOne.java b/kikat/Permutation and Combination/NandMOne.java new file mode 100644 index 0000000..ebee126 --- /dev/null +++ b/kikat/Permutation and Combination/NandMOne.java @@ -0,0 +1,42 @@ +package algorithm; + +import java.util.Scanner; + +public class NandMOne { + + static boolean[] isVisited; + static int[] arr; + static StringBuilder stringBuilder = new StringBuilder(); + + public static void main(String[] args) { + Scanner scanner = new Scanner(System.in); + int n = scanner.nextInt(); + int m = scanner.nextInt(); + + isVisited = new boolean[n]; + arr = new int[m]; + + dfs(n,m, 0); + + System.out.println(stringBuilder); + } + + public static void dfs(int n, int m, int depth) { + if(depth == m) { + for(int i : arr) { + stringBuilder.append(i).append(' '); + } + stringBuilder.append('\n'); + return; + } + + for(int i = 0; i < n; i++) { + if(!isVisited[i]) { + isVisited[i] = true; + arr[depth] = i + 1; + dfs(n, m, depth + 1); + isVisited[i] = false; + } + } + } +} From b932e05740466bf3683ce857873b33d5fd2b9772 Mon Sep 17 00:00:00 2001 From: sunghyuki Date: Thu, 17 Mar 2022 18:04:37 +0900 Subject: [PATCH 2/8] =?UTF-8?q?Boj15650=20N=EA=B3=BC=20M=20(2)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Permutation and Combination/NandMTwo.java | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 kikat/Permutation and Combination/NandMTwo.java diff --git a/kikat/Permutation and Combination/NandMTwo.java b/kikat/Permutation and Combination/NandMTwo.java new file mode 100644 index 0000000..44341cd --- /dev/null +++ b/kikat/Permutation and Combination/NandMTwo.java @@ -0,0 +1,36 @@ +package algorithm; + +import java.util.Scanner; + +public class NandMTwo { + public static int[] arr; + public static StringBuilder stringBuilder = new StringBuilder(); + + public static void main(String[] args) { + Scanner scanner = new Scanner(System.in); + + int n = scanner.nextInt(); + int m = scanner.nextInt(); + + arr = new int[m]; + + dfs(n, m, 0, 0); + + System.out.println(stringBuilder); + } + + public static void dfs(int n, int m, int start, int depth) { + if(depth == m) { + for(int i : arr) { + stringBuilder.append(i).append(' '); + } + stringBuilder.append('\n'); + return; + } + + for(int i = start; i < n; i++) { + arr[depth] = i + 1; + dfs(n, m, i + 1, depth + 1); + } + } +} \ No newline at end of file From 4e2be79e0a29c1785e062df01d7290a9367bd0cb Mon Sep 17 00:00:00 2001 From: sunghyuki Date: Thu, 17 Mar 2022 18:05:11 +0900 Subject: [PATCH 3/8] =?UTF-8?q?Boj15651=20N=EA=B3=BC=20M=20(3)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../NandMThree.java | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 kikat/Permutation and Combination/NandMThree.java diff --git a/kikat/Permutation and Combination/NandMThree.java b/kikat/Permutation and Combination/NandMThree.java new file mode 100644 index 0000000..5d815ed --- /dev/null +++ b/kikat/Permutation and Combination/NandMThree.java @@ -0,0 +1,35 @@ +package algorithm; + +import java.util.Scanner; + +public class NandMThree { + public static int[] arr; + public static StringBuilder stringBuilder = new StringBuilder(); + + public static void main(String[] args) { + Scanner scanner = new Scanner(System.in); + + int n = scanner.nextInt(); + int m = scanner.nextInt(); + + arr = new int[m]; + + dfs(n, m, 0); + System.out.println(stringBuilder); + } + + public static void dfs(int n, int m, int depth) { + if(m == depth) { + for(int i : arr) { + stringBuilder.append(i).append(' '); + } + stringBuilder.append('\n'); + return; + } + + for(int i = 0; i < n; i++) { + arr[depth] = i + 1; + dfs(n, m, depth + 1); + } + } +} From 5764159e842849fb34c1562ff608057febea4f8f Mon Sep 17 00:00:00 2001 From: sunghyuki Date: Thu, 17 Mar 2022 18:05:39 +0900 Subject: [PATCH 4/8] =?UTF-8?q?Boj15652=20N=EA=B3=BC=20M=20(4)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../NandMFour.java | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 kikat/Permutation and Combination/NandMFour.java diff --git a/kikat/Permutation and Combination/NandMFour.java b/kikat/Permutation and Combination/NandMFour.java new file mode 100644 index 0000000..bea77a0 --- /dev/null +++ b/kikat/Permutation and Combination/NandMFour.java @@ -0,0 +1,34 @@ +package algorithm; + +import java.util.Scanner; + +public class NandMFour { + public static int[] arr; + public static StringBuilder stringBuilder = new StringBuilder(); + + public static void main(String[] args) { + Scanner scanner = new Scanner(System.in); + + int n = scanner.nextInt(); + int m = scanner.nextInt(); + + arr = new int[m]; + dfs(n, m, 0, 0); + System.out.println(stringBuilder); + } + + public static void dfs(int n , int m, int start, int depth) { + if(depth == m) { + for(int i : arr) { + stringBuilder.append(i).append(' '); + } + stringBuilder.append('\n'); + return; + } + + for(int i = start; i < n; i++) { + arr[depth] = i + 1; + dfs(n, m, i, depth + 1); + } + } +} From 5e71fabfa43918d163ccb295a0bf9e1e1cbce579 Mon Sep 17 00:00:00 2001 From: sunghyuki Date: Thu, 17 Mar 2022 18:06:08 +0900 Subject: [PATCH 5/8] =?UTF-8?q?Boj10972=20=EB=8B=A4=EC=9D=8C=20=EC=88=9C?= =?UTF-8?q?=EC=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../NextPermutation.java | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 kikat/Permutation and Combination/NextPermutation.java diff --git a/kikat/Permutation and Combination/NextPermutation.java b/kikat/Permutation and Combination/NextPermutation.java new file mode 100644 index 0000000..867b9ea --- /dev/null +++ b/kikat/Permutation and Combination/NextPermutation.java @@ -0,0 +1,52 @@ +package algorithm; + +import java.util.Scanner; + +public class NextPermutation { + public static int[] arr; + + public static void main(String[] args) { + Scanner scanner = new Scanner(System.in); + + int n = scanner.nextInt(); + + arr = new int[n]; + + for (int i = 0; i < n; i++) { + arr[i] = scanner.nextInt(); + } + + if(nextPermutation()) { + for(int i : arr) { + System.out.print(i + " "); + } + } else { + System.out.println("-1"); + } + + } + + private static boolean nextPermutation() { + int a = arr.length - 1; + while(a > 0 && arr[a - 1] >= arr[a]) a--; + if(a <= 0) return false; + + int b = arr.length - 1; + while(arr[a - 1] >= arr[b]) b--; + + int temp = arr[a - 1]; + arr[a - 1] = arr[b]; + arr[b] = temp; + + int start = a; + int end = arr.length - 1; + while(start < end) { + temp = arr[start]; + arr[start] = arr[end]; + arr[end] = temp; + start++; + end--; + } + return true; + } +} From bc883ad9652065ce31b8e8b7092b41928ba49e4b Mon Sep 17 00:00:00 2001 From: sunghyuki Date: Thu, 17 Mar 2022 18:06:30 +0900 Subject: [PATCH 6/8] =?UTF-8?q?Boj10973=20=EC=9D=B4=EC=A0=84=20=EC=88=9C?= =?UTF-8?q?=EC=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PreviousPermutation.java | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 kikat/Permutation and Combination/PreviousPermutation.java diff --git a/kikat/Permutation and Combination/PreviousPermutation.java b/kikat/Permutation and Combination/PreviousPermutation.java new file mode 100644 index 0000000..cf893e5 --- /dev/null +++ b/kikat/Permutation and Combination/PreviousPermutation.java @@ -0,0 +1,56 @@ +package algorithm; + +import java.util.Scanner; + +public class PreviousPermutation { + public static int[] arr; + public static void main(String[] args) { + Scanner scanner = new Scanner(System.in); + + int n = scanner.nextInt(); + + arr = new int[n]; + + for (int i = 0; i < n; i++) { + arr[i] = scanner.nextInt(); + } + + if(previousPermutation()) { + for(int i : arr) { + System.out.print(i + " "); + } + } else { + System.out.println("-1"); + } + + + } + + public static boolean previousPermutation() { + int a = arr.length - 1; + while(a > 0 && arr[a - 1] <= arr[a]) a--; + if(a <= 0) { + return false; + } + + // a - 1 이랑 그 다음으로 큰 수랑 바뀌어야 함. + + int b = arr.length - 1; + while(b > 0 && arr[b] >= arr[a - 1]) b--; + + int temp = arr[b]; + arr[b] = arr[a - 1]; + arr[a - 1] = temp; + + int start = a; + int end = arr.length - 1; + while(start < end) { + temp = arr[start]; + arr[start] = arr[end]; + arr[end] = temp; + start++; + end--; + } + return true; + } +} From e48712b88dc550aa815f1e8d11d86b71dd4b2018 Mon Sep 17 00:00:00 2001 From: sunghyuki Date: Thu, 17 Mar 2022 18:06:59 +0900 Subject: [PATCH 7/8] =?UTF-8?q?Boj10974=20=EB=AA=A8=EB=93=A0=20=EC=88=9C?= =?UTF-8?q?=EC=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AllPermutation.java | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 kikat/Permutation and Combination/AllPermutation.java diff --git a/kikat/Permutation and Combination/AllPermutation.java b/kikat/Permutation and Combination/AllPermutation.java new file mode 100644 index 0000000..5609f77 --- /dev/null +++ b/kikat/Permutation and Combination/AllPermutation.java @@ -0,0 +1,40 @@ +package algorithm; + +import java.util.Scanner; + +public class AllPermutation { + public static StringBuilder stringBuilder = new StringBuilder(); + public static int[] arr; + public static boolean[] isVisited; + + public static void main(String[] args) { + Scanner scanner = new Scanner(System.in); + + int n = scanner.nextInt(); + + arr= new int[n]; + isVisited = new boolean[n]; + + dfs(n, 0); + System.out.println(stringBuilder); + } + + public static void dfs(int n , int depth) { + if(depth == n) { + for(int i : arr) { + stringBuilder.append(i).append(' '); + } + stringBuilder.append('\n'); + return; + } + + for(int i = 0; i < n; i++) { + if(!isVisited[i]) { + isVisited[i] = true; + arr[depth] = i + 1; + dfs(n, depth + 1); + isVisited[i] = false; + } + } + } +} From 4f35ccbdafd4cd2ad345bee30fd61bc4733c1877 Mon Sep 17 00:00:00 2001 From: sunghyuki Date: Thu, 17 Mar 2022 18:07:23 +0900 Subject: [PATCH 8/8] =?UTF-8?q?Boj6603=20=EB=A1=9C=EB=98=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kikat/Permutation and Combination/Lotto.java | 48 ++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 kikat/Permutation and Combination/Lotto.java diff --git a/kikat/Permutation and Combination/Lotto.java b/kikat/Permutation and Combination/Lotto.java new file mode 100644 index 0000000..6dacacf --- /dev/null +++ b/kikat/Permutation and Combination/Lotto.java @@ -0,0 +1,48 @@ +package algorithm; + +import java.util.Scanner; + +public class Lotto { + public static int[] arr; + public static boolean[] isVisited; + public static int k; + + public static void main(String[] args) { + Scanner scanner = new Scanner(System.in); + + while(true) { + k = scanner.nextInt(); + + if(k == 0) { + break; + } + + arr = new int[k]; + isVisited = new boolean[k]; + + for(int i = 0; i < k; i++) { + arr[i] = scanner.nextInt(); + } + lotto(0, 0); + System.out.println(); + } + } + + public static void lotto(int start, int depth) { + if(depth == 6) { + for(int i = 0; i < k; i++) { + if(isVisited[i]) { + System.out.print(arr[i] + " "); + } + } + System.out.println(); + return; + } + + for(int i = start; i < k; i++) { + isVisited[i] = true; + lotto(i + 1, depth + 1); + isVisited[i] = false; + } + } +}