From 9d316c8f3cf2b198cbac606d9042299f9488f00b Mon Sep 17 00:00:00 2001 From: BumBamBi Date: Fri, 25 Mar 2022 02:41:34 +0900 Subject: [PATCH 1/5] =?UTF-8?q?code=20:=20=EC=9D=B4=EA=B4=91=EC=9A=B0=20BO?= =?UTF-8?q?J=2013398=20=EC=97=B0=EC=86=8D=ED=95=A92=20DP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/algorithm/kwangwoo/week8/q13398/Main.java | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/algorithm/kwangwoo/week8/q13398/Main.java diff --git a/src/algorithm/kwangwoo/week8/q13398/Main.java b/src/algorithm/kwangwoo/week8/q13398/Main.java new file mode 100644 index 0000000..6aeba93 --- /dev/null +++ b/src/algorithm/kwangwoo/week8/q13398/Main.java @@ -0,0 +1,40 @@ +package algorithm.kwangwoo.week8.q13398; + +import java.util.Scanner; + +public class Main { + + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + + int n = sc.nextInt(); + + int[] arr = new int[n]; + int[][] dp = new int[2][n]; + + for (int i = 0; i < n; i++) { + arr[i] = sc.nextInt(); + } + + int max = arr[0]; + dp[0][0] = arr[0]; + dp[1][0] = arr[0]; + + // dp[0][i] : 처음부터 i까지 모든 수를 더했을 때의 최대값 (max(이전까지의 최대값+자기자신 vs 자기자신)) + // dp[1][i] : 자기자신을 제거(앞에서 제거한 적X)하거나 안하거나(앞에서 제거한적 O) + + for (int i = 1; i < n; i++) { + // 이전까지 합 + 자신 vs 자신 + dp[0][i] = Math.max(dp[0][i - 1] + arr[i], arr[i]); + // 이전까지의 합(자신 제외) vs 이전에 한번 제외했던 합 + 자신 + dp[1][i] = Math.max(dp[0][i - 1], dp[1][i - 1] + arr[i]); + + // 제일 큰 값 + max = Math.max(max, Math.max(dp[0][i], dp[1][i])); + } + + System.out.println(max); + + sc.close(); + } +} \ No newline at end of file From 25bedb0a3b26a0dc2a72e605d9cfb7d306c535f0 Mon Sep 17 00:00:00 2001 From: BumBamBi Date: Thu, 31 Mar 2022 02:00:51 +0900 Subject: [PATCH 2/5] =?UTF-8?q?code=20:=20=EC=9D=B4=EA=B4=91=EC=9A=B0=20BO?= =?UTF-8?q?J=2013226=20DP=20=EC=9D=B4=EB=AA=A8=ED=8B=B0=EC=BD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/algorithm/kwangwoo/week8/q14226/Main.java | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 src/algorithm/kwangwoo/week8/q14226/Main.java diff --git a/src/algorithm/kwangwoo/week8/q14226/Main.java b/src/algorithm/kwangwoo/week8/q14226/Main.java new file mode 100644 index 0000000..121e95f --- /dev/null +++ b/src/algorithm/kwangwoo/week8/q14226/Main.java @@ -0,0 +1,77 @@ +package algorithm.kwangwoo.week8.q14226; + +import java.util.LinkedList; +import java.util.Queue; +import java.util.Scanner; + +/* +visited[클리보드 개수][스크린 개수] 로 나눠서 진행 + +목표값을 초과한 후 지워서 값을 맞추는 경우는 없는 것인가? + + + +*/ + +public class Main { + static int S; + + static boolean[][] visited; + + static class emoticon { + int clipboard = 0; + int screen = 0; + int sec = 0; + + emoticon(int clipboard, int screen, int sec){ + this.clipboard = clipboard; + this.screen = screen; + this.sec = sec; + } + } + + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + + S = sc.nextInt(); + // [클립보드][스크린] + // 범위가 S+1 이면 충분한게 맞나..? + visited = new boolean[S + 1][S + 1]; + + bfs(S); + + sc.close(); + } + + static void bfs(int target) { + Queue q = new LinkedList<>(); + q.offer(new emoticon(0, 1, 0)); + visited[0][1] = true; + + while (!q.isEmpty()) { + emoticon cur = q.poll(); + + // 목표에 도달하면 끝 + if (cur.screen == target) { + System.out.println(cur.sec); + return; + } + + // 1. 화면에 있는 이모티콘을 모두 복사해서 클립보드에 저장한다. + q.offer(new emoticon(cur.screen, cur.screen, cur.sec + 1)); + + // 2. 클립보드에 있는 모든 이모티콘을 화면에 붙여넣기 한다. + // cur.screen + cur.clipboard <= target 이어야하는 이유는? + if (cur.clipboard != 0 && cur.screen + cur.clipboard <= target && !visited[cur.clipboard][cur.screen + cur.clipboard]) { + q.offer(new emoticon(cur.clipboard, cur.screen + cur.clipboard, cur.sec + 1)); + visited[cur.clipboard][cur.screen + cur.clipboard] = true; + } + + // 3. 화면에 있는 이모티콘 중 하나를 삭제한다. + if (1 <= cur.screen && !visited[cur.clipboard][cur.screen - 1]) { + q.offer(new emoticon(cur.clipboard, cur.screen - 1, cur.sec + 1)); + visited[cur.clipboard][cur.screen - 1] = true; + } + } + } +} From 81f2c1ea879070ac8cfe2c885a00c701e6306975 Mon Sep 17 00:00:00 2001 From: BumBamBi Date: Tue, 5 Apr 2022 14:15:45 +0900 Subject: [PATCH 3/5] =?UTF-8?q?code=20:=20BOJ=20=EC=9D=B4=EA=B4=91?= =?UTF-8?q?=EC=9A=B0=202811=20=ED=81=AC=EA=B2=8C=20=EB=A7=8C=EB=93=A4?= =?UTF-8?q?=EA=B8=B0=20DP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/algorithm/kwangwoo/week8/q2811/Main.java | 53 ++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 src/algorithm/kwangwoo/week8/q2811/Main.java diff --git a/src/algorithm/kwangwoo/week8/q2811/Main.java b/src/algorithm/kwangwoo/week8/q2811/Main.java new file mode 100644 index 0000000..c2fc107 --- /dev/null +++ b/src/algorithm/kwangwoo/week8/q2811/Main.java @@ -0,0 +1,53 @@ +package algorithm.kwangwoo.week8.q2811; + +import java.util.Scanner; + +public class Main { + + static int N; + static int K; + static String input; + + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + + N = sc.nextInt(); + K = sc.nextInt(); + input = sc.next(); + + String curStr = input; + StringBuilder sb = new StringBuilder(); + + // 제거할 숫자 개수만큼 반복 + for (int i = 1; i <= K; i++) { + String preStr = curStr; + for (int j = 0; j < preStr.length(); j++) { + // 숫자 하나 뺀 str만들기 + for (int k = 0; k < preStr.length(); k++) { + if (k != j) { + sb.append(preStr.charAt(k)); + } + } + // String tempStr = sb.toString(); + + // 만들어진 str과 기존 str과 비교하기 + for (int k = 0; k < sb.toString().length(); k++) { + if (curStr.charAt(k) < sb.toString().charAt(k)) { + curStr = sb.toString(); + break; + } else if (curStr.charAt(k) == sb.toString().charAt(k)) { + continue; + } else { + break; + } + } + + // sb초기화 + sb.setLength(0); + } + } + + System.out.println(curStr); + sc.close(); + } +} \ No newline at end of file From 1a17d8ccb4c78cce96aa8cd18965a546964c44d6 Mon Sep 17 00:00:00 2001 From: BumBamBi Date: Tue, 5 Apr 2022 17:18:53 +0900 Subject: [PATCH 4/5] =?UTF-8?q?fix=20:=20=EC=9D=B4=EA=B4=91=EC=9A=B0=20BOJ?= =?UTF-8?q?=202811=20=ED=81=AC=EA=B2=8C=20=EB=A7=8C=EB=93=A4=EA=B8=B0=20?= =?UTF-8?q?=EA=B7=B8=EB=A6=AC=EB=94=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/algorithm/kwangwoo/week8/q2811/Main.java | 62 +++++++++----------- 1 file changed, 28 insertions(+), 34 deletions(-) diff --git a/src/algorithm/kwangwoo/week8/q2811/Main.java b/src/algorithm/kwangwoo/week8/q2811/Main.java index c2fc107..f291c8d 100644 --- a/src/algorithm/kwangwoo/week8/q2811/Main.java +++ b/src/algorithm/kwangwoo/week8/q2811/Main.java @@ -1,53 +1,47 @@ package algorithm.kwangwoo.week8.q2811; import java.util.Scanner; +import java.util.Stack; public class Main { static int N; static int K; - static String input; + static int[] arrInputInt; + static int count = 0; + static Stack stack = new Stack<>(); - public static void main(String[] args) { + public static void main(String[] args) throws Exception { Scanner sc = new Scanner(System.in); - + N = sc.nextInt(); K = sc.nextInt(); - input = sc.next(); + String input = sc.next(); + arrInputInt = new int[N]; - String curStr = input; - StringBuilder sb = new StringBuilder(); - - // 제거할 숫자 개수만큼 반복 - for (int i = 1; i <= K; i++) { - String preStr = curStr; - for (int j = 0; j < preStr.length(); j++) { - // 숫자 하나 뺀 str만들기 - for (int k = 0; k < preStr.length(); k++) { - if (k != j) { - sb.append(preStr.charAt(k)); - } - } - // String tempStr = sb.toString(); + // 입력숫자의 각 자리를 배열에 넣음 + for (int i = 0; i < input.length(); i++) { + arrInputInt[i] = input.charAt(i) - '0'; + } - // 만들어진 str과 기존 str과 비교하기 - for (int k = 0; k < sb.toString().length(); k++) { - if (curStr.charAt(k) < sb.toString().charAt(k)) { - curStr = sb.toString(); - break; - } else if (curStr.charAt(k) == sb.toString().charAt(k)) { - continue; - } else { - break; - } - } - - // sb초기화 - sb.setLength(0); + // 다음 자리수가 더 크다면 빼는게 더 이득임! + for (int i = 0; i < arrInputInt.length; i++) { + // 뺄 숫자가 남아있고(count Date: Wed, 6 Apr 2022 09:46:37 +0900 Subject: [PATCH 5/5] etc : move files --- src/algorithm/kwangwoo/week8/{ => boj}/q13398/Main.java | 2 +- src/algorithm/kwangwoo/week8/{ => boj}/q14226/Main.java | 2 +- src/algorithm/kwangwoo/week8/{ => boj}/q2811/Main.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) rename src/algorithm/kwangwoo/week8/{ => boj}/q13398/Main.java (96%) rename src/algorithm/kwangwoo/week8/{ => boj}/q14226/Main.java (98%) rename src/algorithm/kwangwoo/week8/{ => boj}/q2811/Main.java (96%) diff --git a/src/algorithm/kwangwoo/week8/q13398/Main.java b/src/algorithm/kwangwoo/week8/boj/q13398/Main.java similarity index 96% rename from src/algorithm/kwangwoo/week8/q13398/Main.java rename to src/algorithm/kwangwoo/week8/boj/q13398/Main.java index 6aeba93..8578ab3 100644 --- a/src/algorithm/kwangwoo/week8/q13398/Main.java +++ b/src/algorithm/kwangwoo/week8/boj/q13398/Main.java @@ -1,4 +1,4 @@ -package algorithm.kwangwoo.week8.q13398; +package algorithm.kwangwoo.week8.boj.q13398; import java.util.Scanner; diff --git a/src/algorithm/kwangwoo/week8/q14226/Main.java b/src/algorithm/kwangwoo/week8/boj/q14226/Main.java similarity index 98% rename from src/algorithm/kwangwoo/week8/q14226/Main.java rename to src/algorithm/kwangwoo/week8/boj/q14226/Main.java index 121e95f..f200915 100644 --- a/src/algorithm/kwangwoo/week8/q14226/Main.java +++ b/src/algorithm/kwangwoo/week8/boj/q14226/Main.java @@ -1,4 +1,4 @@ -package algorithm.kwangwoo.week8.q14226; +package algorithm.kwangwoo.week8.boj.q14226; import java.util.LinkedList; import java.util.Queue; diff --git a/src/algorithm/kwangwoo/week8/q2811/Main.java b/src/algorithm/kwangwoo/week8/boj/q2811/Main.java similarity index 96% rename from src/algorithm/kwangwoo/week8/q2811/Main.java rename to src/algorithm/kwangwoo/week8/boj/q2811/Main.java index f291c8d..e594bef 100644 --- a/src/algorithm/kwangwoo/week8/q2811/Main.java +++ b/src/algorithm/kwangwoo/week8/boj/q2811/Main.java @@ -1,4 +1,4 @@ -package algorithm.kwangwoo.week8.q2811; +package algorithm.kwangwoo.week8.boj.q2811; import java.util.Scanner; import java.util.Stack;