From 178782371a673d4e500a6a46b923fb9c48cafe12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=A7=80=EC=9D=80?= Date: Wed, 15 Mar 2023 10:02:20 +0900 Subject: [PATCH 01/17] =?UTF-8?q?:technologist:=20feat:=20=EB=B0=B1?= =?UTF-8?q?=EC=A4=80=2020437=EB=B2=88=20=EB=AC=B8=EC=9E=90=EC=97=B4=20?= =?UTF-8?q?=EA=B2=8C=EC=9E=84=202?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/baekjoon/BOJ20437.java | 74 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 src/baekjoon/BOJ20437.java diff --git a/src/baekjoon/BOJ20437.java b/src/baekjoon/BOJ20437.java new file mode 100644 index 0000000..52b05cc --- /dev/null +++ b/src/baekjoon/BOJ20437.java @@ -0,0 +1,74 @@ +package baekjoon; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.List; + +public class BOJ20437 { + + static List[] characters = new ArrayList[28]; + + private static int getShortestLength(int chIdx, int K) { + int i = 0; + int j = K-1; + int minLength = Integer.MAX_VALUE; + while (j < characters[chIdx].size()){ + if (minLength > (characters[chIdx].get(j) - characters[chIdx].get(i)) + 1){ + minLength = characters[chIdx].get(j) - characters[chIdx].get(i) + 1; + } + i++;j++; + } + return minLength; + } + + private static int getLongestLength(int chIdx, int K) { + int i = 0; + int j = K-1; + int maxLength= Integer.MIN_VALUE; + while (j < characters[chIdx].size()){ + if (maxLength < (characters[chIdx].get(j) - characters[chIdx].get(i)) +1){ + maxLength = characters[chIdx].get(j) - characters[chIdx].get(i) + 1; + } + i++;j++; + } + return maxLength; + } + + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + int T = Integer.parseInt(br.readLine()); + StringBuilder sb = new StringBuilder(); + for (int t = 0; t < T; t++) { + String W = br.readLine(); + int K = Integer.parseInt(br.readLine()); + for (int i = 0; i < 28; i++) { + characters[i] = new ArrayList<>(); + } + for (int i = 0; i < W.length(); i++) { + characters[W.charAt(i) - 'a'].add(i); + } + int ans1 = Integer.MAX_VALUE; + int ans2 = Integer.MIN_VALUE; + for (int i = 0; i < 28; i++) { + if (characters[i].size() >= K) { + int result1 = getShortestLength(i, K); + int result2 = getLongestLength(i, K); + if (ans1 > result1) { + ans1 = result1; + } + if (ans2 < result2){ + ans2 = result2; + } + } + } + if (ans1 == Integer.MAX_VALUE) { + sb.append(-1).append("\n"); + } else { + sb.append(ans1).append(" ").append(ans2).append("\n"); + } + } + System.out.print(sb); + } +} From df5c494765f01e92d9956f0f07208e7077fc306e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=A7=80=EC=9D=80?= Date: Wed, 15 Mar 2023 10:53:33 +0900 Subject: [PATCH 02/17] =?UTF-8?q?:technologist:=20feat:=20=EB=B0=B1?= =?UTF-8?q?=EC=A4=80=209935=EB=B2=88=20=EB=AC=B8=EC=9E=90=EC=97=B4=20?= =?UTF-8?q?=ED=8F=AD=EB=B0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/baekjoon/BOJ9935.java | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 src/baekjoon/BOJ9935.java diff --git a/src/baekjoon/BOJ9935.java b/src/baekjoon/BOJ9935.java new file mode 100644 index 0000000..d340960 --- /dev/null +++ b/src/baekjoon/BOJ9935.java @@ -0,0 +1,32 @@ +package baekjoon; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +public class BOJ9935 { + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + String origin = br.readLine(); + String bomb = br.readLine(); + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < origin.length(); i++) { + sb.append(origin.charAt(i)); + if (sb.length() >= bomb.length()) { + int j; + for (j = 0; j < bomb.length(); j++) { + if (bomb.charAt(j) != sb.charAt(sb.length() - bomb.length() + j)) { + break; + } + } + if (j == bomb.length()) { + sb.delete(sb.length() - bomb.length(), sb.length()); + } + } + } + if (sb.length() == 0) { + sb.append("FRULA"); + } + System.out.println(sb); + } +} From 4b1f35cde5c7b5ed5e1414230770e3ce4e158704 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=A7=80=EC=9D=80?= Date: Tue, 28 Mar 2023 16:44:35 +0900 Subject: [PATCH 03/17] =?UTF-8?q?:technologist:=20feat:=20=EB=B0=B1?= =?UTF-8?q?=EC=A4=80=201149=EB=B2=88=20RGB=EA=B1=B0=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/baekjoon/BOJ1149.java | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 src/baekjoon/BOJ1149.java diff --git a/src/baekjoon/BOJ1149.java b/src/baekjoon/BOJ1149.java new file mode 100644 index 0000000..c524bf3 --- /dev/null +++ b/src/baekjoon/BOJ1149.java @@ -0,0 +1,33 @@ +package baekjoon; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.StringTokenizer; + +public class BOJ1149 { + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st; + int N = Integer.parseInt(br.readLine()); + int[][] cost = new int[N][3]; + for (int i = 0; i < N; i++) { + st = new StringTokenizer(br.readLine()); + for (int j = 0; j < 3; j++) { + cost[i][j] = Integer.parseInt(st.nextToken()); + } + } + int [][] dp = new int[N][3]; + dp[0][0]=cost[0][0]; + dp[0][1]=cost[0][1]; + dp[0][2]=cost[0][2]; + + for (int i=1;i Date: Wed, 29 Mar 2023 09:43:40 +0900 Subject: [PATCH 04/17] =?UTF-8?q?:technologist:=20feat:=20=EB=B0=B1?= =?UTF-8?q?=EC=A4=80=201912=EB=B2=88=20=EC=97=B0=EC=86=8D=ED=95=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/baekjoon/BOJ1912.java | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 src/baekjoon/BOJ1912.java diff --git a/src/baekjoon/BOJ1912.java b/src/baekjoon/BOJ1912.java new file mode 100644 index 0000000..789c5b7 --- /dev/null +++ b/src/baekjoon/BOJ1912.java @@ -0,0 +1,24 @@ +package baekjoon; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.StringTokenizer; + +public class BOJ1912 { + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + int N = Integer.parseInt(br.readLine()); + int [] dp = new int[N+1]; + StringTokenizer st = new StringTokenizer(br.readLine()); + dp[0] = 0; + int max = Integer.MIN_VALUE; + for (int i = 1; i <= N ; i++) { + dp[i] = Integer.parseInt(st.nextToken()); + dp[i] = Math.max(dp[i-1] + dp[i], dp[i]); + if (dp[i] > max) + max = dp[i]; + } + System.out.println(max); + } +} From 34a498effaa765c35bb6a4611f05b1f2c54f79c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=A7=80=EC=9D=80?= Date: Wed, 29 Mar 2023 15:02:44 +0900 Subject: [PATCH 05/17] =?UTF-8?q?:technologist:=20feat:=20=EB=B0=B1?= =?UTF-8?q?=EC=A4=80=209251=EB=B2=88=20LCS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/baekjoon/BOJ9251.java | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 src/baekjoon/BOJ9251.java diff --git a/src/baekjoon/BOJ9251.java b/src/baekjoon/BOJ9251.java new file mode 100644 index 0000000..a1b4ad6 --- /dev/null +++ b/src/baekjoon/BOJ9251.java @@ -0,0 +1,30 @@ +package baekjoon; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +public class BOJ9251 { + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + String X = br.readLine(); + String Y = br.readLine(); + int [][] LCS = new int[X.length()+1][Y.length()+1]; + for (int i = 0; i <= X.length(); i++) { + LCS[i][0] = 0; + } + for (int i = 0; i <= Y.length(); i++) { + LCS[0][i] = 0; + } + for (int i = 1; i <= X.length(); i++) { + for (int j = 1; j <= Y.length(); j++) { + if (X.charAt(i-1) == Y.charAt(j-1)){ + LCS[i][j] = LCS[i-1][j-1] +1; + } else { + LCS[i][j] = Math.max(LCS[i - 1][j], LCS[i][j - 1]); + } + } + } + System.out.println(LCS[X.length()][Y.length()]); + } +} From 1bace9aabcd59e8e5a5bb1318cd3b1de681fe422 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=A7=80=EC=9D=80?= Date: Wed, 29 Mar 2023 15:23:41 +0900 Subject: [PATCH 06/17] =?UTF-8?q?:technologist:=20feat:=20=EB=B0=B1?= =?UTF-8?q?=EC=A4=80=209252=EB=B2=88=20LCS2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/baekjoon/BOJ9252.java | 47 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/baekjoon/BOJ9252.java diff --git a/src/baekjoon/BOJ9252.java b/src/baekjoon/BOJ9252.java new file mode 100644 index 0000000..e220c43 --- /dev/null +++ b/src/baekjoon/BOJ9252.java @@ -0,0 +1,47 @@ +package baekjoon; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +public class BOJ9252 { + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + String X = br.readLine(); + String Y = br.readLine(); + int [][] LCS = new int[X.length()+1][Y.length()+1]; + for (int i = 0; i <= X.length(); i++) { + LCS[i][0] = 0; + } + for (int i = 0; i <= Y.length(); i++) { + LCS[0][i] = 0; + } + for (int i = 1; i <= X.length(); i++) { + for (int j = 1; j <= Y.length(); j++) { + if (X.charAt(i-1) == Y.charAt(j-1)){ + LCS[i][j] = LCS[i-1][j-1] +1; + } else { + LCS[i][j] = Math.max(LCS[i - 1][j], LCS[i][j - 1]); + } + } + } + int i = X.length(); + int j = Y.length(); + StringBuilder sb = new StringBuilder(); + while (i > 0 && j > 0) { + if (X.charAt(i-1) == Y.charAt(j-1)){ + sb.append(X.charAt(i - 1)); + i--; j--; + } else { + if (LCS[i][j] == LCS[i - 1][j]){ + i--; + } else { + j--; + } + } + } + sb.reverse(); + System.out.println(LCS[X.length()][Y.length()]); + System.out.println(sb); + } +} From fc8df63307eddb444e091d7e1ce0e5628a5bce9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=A7=80=EC=9D=80?= Date: Wed, 29 Mar 2023 17:29:38 +0900 Subject: [PATCH 07/17] =?UTF-8?q?:technologist:=20feat:=20=EB=B0=B1?= =?UTF-8?q?=EC=A4=80=2013750=EB=B2=88=20Zigzag?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/baekjoon/BOJ13750.java | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/baekjoon/BOJ13750.java diff --git a/src/baekjoon/BOJ13750.java b/src/baekjoon/BOJ13750.java new file mode 100644 index 0000000..86a88d1 --- /dev/null +++ b/src/baekjoon/BOJ13750.java @@ -0,0 +1,29 @@ +package baekjoon; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +public class BOJ13750 { + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + int N = Integer.parseInt(br.readLine()); + int [] A = new int[N]; + int [] low = new int[N]; + int [] high = new int[N]; + for (int i = 0; i < N; i++) { + A[i] = Integer.parseInt(br.readLine()); + low[i] = 1; + high[i] = 1; + } + for (int k = 0; k < N; k++) { + for (int j = 0; j < k; j++) { + if (A[j] > A[k]) + low[k] = Math.max(low[k], high[j] + 1); + if (A[j] < A[k]) + high[k] = Math.max(high[k], low[j] + 1); + } + } + System.out.println(Math.max(low[N-1], high[N-1])); + } +} From 0c16216fa78ab2eecaeda873a90dd4b58ddf79fc Mon Sep 17 00:00:00 2001 From: jxixeun Date: Sun, 2 Apr 2023 22:08:01 +0900 Subject: [PATCH 08/17] =?UTF-8?q?:technologist:=20feat:=20=EB=B0=B1?= =?UTF-8?q?=EC=A4=80=202239=EB=B2=88=20=EC=8A=A4=EB=8F=84=EC=BF=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/baekjoon/BOJ2239.java | 66 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 src/baekjoon/BOJ2239.java diff --git a/src/baekjoon/BOJ2239.java b/src/baekjoon/BOJ2239.java new file mode 100644 index 0000000..8052640 --- /dev/null +++ b/src/baekjoon/BOJ2239.java @@ -0,0 +1,66 @@ +package baekjoon; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.ArrayDeque; +import java.util.Deque; + +public class BOJ2239 { + + static int [][] arr = new int[9][9]; + static boolean [][] row = new boolean[9][9]; + static boolean [][] col = new boolean[9][9]; + static boolean [][] square = new boolean[9][9]; + static StringBuilder sb = new StringBuilder(); + + private static void sudoku(int cnt){ + if (cnt == 81){ + for (int i = 0; i < 9; i++) { + for (int j = 0; j < 9; j++) { + sb.append(arr[i][j]); + } + sb.append("\n"); + } + System.out.print(sb); + System.exit(0); + } + int i = cnt / 9; + int j = cnt % 9; + if (arr[i][j]==0){ + for (int k = 0; k < 9; k++) { + if (!row[i][k] && !col[j][k] && !square[(i/3)*3+(j/3)][k]){ + arr[i][j] = k+1; + row[i][k] = true; + col[j][k] = true; + square[(i/3)*3+(j/3)][k] = true; + sudoku(cnt+1); + arr[i][j] = 0; + row[i][k] = false; + col[j][k] = false; + square[(i/3)*3+(j/3)][k] = false; + } + } + } else { + sudoku(cnt+1); + } + + } + + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + for (int i = 0; i < 9; i++) { + String input = br.readLine(); + for (int j = 0; j < 9; j++) { + arr[i][j] = input.charAt(j)-'0'; + if (arr[i][j] != 0){ + row[i][arr[i][j]-1] = true; + col[j][arr[i][j]-1] = true; + square[(i/3)*3+(j/3)][arr[i][j]-1] = true; + } + } + } + sudoku(0); + } +} + From 704934ba7f6c9f22b406ac1e26aa225cb10a9c8b Mon Sep 17 00:00:00 2001 From: jxixeun Date: Mon, 3 Apr 2023 00:02:25 +0900 Subject: [PATCH 09/17] =?UTF-8?q?:technologist:=20feat:=20=EB=B0=B1?= =?UTF-8?q?=EC=A4=80=202636=EB=B2=88=20=EC=B9=98=EC=A6=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/baekjoon/BOJ2636.java | 70 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 src/baekjoon/BOJ2636.java diff --git a/src/baekjoon/BOJ2636.java b/src/baekjoon/BOJ2636.java new file mode 100644 index 0000000..7c6fad3 --- /dev/null +++ b/src/baekjoon/BOJ2636.java @@ -0,0 +1,70 @@ +package baekjoon; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.ArrayDeque; +import java.util.Queue; +import java.util.StringTokenizer; + +public class BOJ2636 { + + static boolean [][] visited; + static int R,C; + static char [][] map; + static int [] dx = {1,-1,0,0}; + static int [] dy = {0,0,1,-1}; + + static int bfs() { + visited = new boolean[R][C]; + Queue queue = new ArrayDeque<>(); + queue.offer(new int[]{0, 0}); + visited[0][0] = true; + int [] current; + int nx, ny; + int count = 0; + while(!queue.isEmpty()){ + current = queue.poll(); + for (int i = 0; i < 4; i++) { + nx = current[0] + dx[i]; + ny = current[1] + dy[i]; + if (nx >= 0 && ny >= 0 && nx < R && ny < C && !visited[nx][ny]){ + visited[nx][ny] = true; + if (map[nx][ny] == '0'){ + queue.offer(new int[]{nx,ny}); + } else { + map[nx][ny] = '0'; + count++; + } + } + } + } + return count; + } + + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + R = Integer.parseInt(st.nextToken()); + C = Integer.parseInt(st.nextToken()); + map = new char[R][C]; + int cheese = 0; + int cnt = 0; + int answer = 0; + for (int i = 0; i < R; i++) { + st = new StringTokenizer(br.readLine()); + for (int j = 0; j < C; j++) { + map[i][j] = st.nextToken().charAt(0); + if (map[i][j] == '1') + cheese++; + } + } + while (cheese > 0){ + cnt++; + answer = bfs(); + cheese-= answer; + } + System.out.println(cnt); + System.out.println(answer); + } +} From 73ec120ace6990be28c2c10388d4fa484e15baf9 Mon Sep 17 00:00:00 2001 From: jxixeun Date: Sun, 9 Apr 2023 22:19:18 +0900 Subject: [PATCH 10/17] =?UTF-8?q?:technologist:=20feat:=20=EB=B0=B1?= =?UTF-8?q?=EC=A4=80=2015961=EB=B2=88=20=ED=9A=8C=EC=A0=84=20=EC=B4=88?= =?UTF-8?q?=EB=B0=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/baekjoon/BOJ15961.java | 44 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/baekjoon/BOJ15961.java diff --git a/src/baekjoon/BOJ15961.java b/src/baekjoon/BOJ15961.java new file mode 100644 index 0000000..783c658 --- /dev/null +++ b/src/baekjoon/BOJ15961.java @@ -0,0 +1,44 @@ +package baekjoon; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.StringTokenizer; + +public class BOJ15961 { + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + int N = Integer.parseInt(st.nextToken()); + int d = Integer.parseInt(st.nextToken()); + int k = Integer.parseInt(st.nextToken()); + int c = Integer.parseInt(st.nextToken()); + int[] arr = new int[N]; + int [] visited = new int[d+1]; + for (int i = 0; i < N; i++) { + arr[i] = Integer.parseInt(br.readLine()); + } + int count = 0; + for (int i = 0; i < k; i++) { + if (visited[arr[i]] == 0){ + count++; + } + visited[arr[i]]++; + } + int result = count; + for (int i = 0; i < N; i++) { + if (visited[c] == 0){ + result = Math.max(result, count+1); + } else { + result = Math.max(result, count); + } + if (--visited[arr[i]] == 0){ + count--; + } + if (visited[arr[(i+k)%N]]++ == 0){ + count++; + } + } + System.out.println(result); + } +} From 42f097f1802bf509aba19c4689c8db0fc1956e37 Mon Sep 17 00:00:00 2001 From: jxixeun Date: Sun, 9 Apr 2023 22:39:38 +0900 Subject: [PATCH 11/17] =?UTF-8?q?:technologist:=20feat:=20=EB=B0=B1?= =?UTF-8?q?=EC=A4=80=202458=EB=B2=88=20=ED=82=A4=20=EC=88=9C=EC=84=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/baekjoon/BOJ2458.java | 60 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 src/baekjoon/BOJ2458.java diff --git a/src/baekjoon/BOJ2458.java b/src/baekjoon/BOJ2458.java new file mode 100644 index 0000000..fcde91a --- /dev/null +++ b/src/baekjoon/BOJ2458.java @@ -0,0 +1,60 @@ +package baekjoon; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.StringTokenizer; + +public class BOJ2458 { + static boolean [] visited; + static boolean [][] adjMatrix; + static int N; + + private static int dfs(int current) { + visited[current] = true; + int ret = 1; + for (int i = 1; i <= N; i++) { + if (adjMatrix[current][i] && !visited[i]){ + ret += dfs(i); + } + } + return ret; + } + + private static int reverse_dfs(int current) { + visited[current] = true; + int ret = 1; + for (int i = 1; i <= N; i++) { + if (adjMatrix[i][current] && !visited[i]){ + ret += reverse_dfs(i); + } + } + return ret; + } + + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + N = Integer.parseInt(st.nextToken()); + adjMatrix = new boolean[N + 1][N + 1]; + int M = Integer.parseInt(st.nextToken()); + for (int i = 0; i < M; i++) { + st = new StringTokenizer(br.readLine()); + int s = Integer.parseInt(st.nextToken()); + int e = Integer.parseInt(st.nextToken()); + adjMatrix[s][e] = true; + } + int result; + int answer = 0; + for (int i = 1; i <= N; i++) { + result = 0; + visited = new boolean[N + 1]; + result += dfs(i); + result += reverse_dfs(i); + if (result-1 == N){ + answer++; + } + } + System.out.println(answer); + } +} From fc638bd10f5213f42c2647f41cb103eff9827ae4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=A7=80=EC=9D=80?= Date: Tue, 11 Apr 2023 11:06:39 +0900 Subject: [PATCH 12/17] =?UTF-8?q?:technologist:=20feat:=20=EB=B0=B1?= =?UTF-8?q?=EC=A4=80=202252=EB=B2=88=20=EC=A4=84=20=EC=84=B8=EC=9A=B0?= =?UTF-8?q?=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/baekjoon/BOJ2252.java | 60 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 src/baekjoon/BOJ2252.java diff --git a/src/baekjoon/BOJ2252.java b/src/baekjoon/BOJ2252.java new file mode 100644 index 0000000..3ded7a7 --- /dev/null +++ b/src/baekjoon/BOJ2252.java @@ -0,0 +1,60 @@ +package baekjoon; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.Stack; +import java.util.StringTokenizer; + +public class BOJ2252 { + + private static boolean [] visited; + private static Node [] adjList; + private static Stack stack = new Stack<>(); + + private static void dfs(int current) { + visited[current] = true; + for (Node temp = adjList[current]; temp!=null; temp=temp.link){ + if (!visited[temp.vertex]){ + dfs(temp.vertex); + } + } + stack.push(current); + } + + static class Node { + int vertex; + Node link; + + public Node(int vertex, Node link) { + this.vertex = vertex; + this.link = link; + } + } + + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + int N = Integer.parseInt(st.nextToken()); + int M = Integer.parseInt(st.nextToken()); + adjList = new Node[N+1]; + visited = new boolean[N+1]; + int from, to; + for (int i = 0; i < M; i++) { + st = new StringTokenizer(br.readLine()); + from = Integer.parseInt(st.nextToken()); + to = Integer.parseInt(st.nextToken()); + adjList[from] = new Node(to, adjList[from]); + } + for (int i = 1; i <= N; i++) { + if (!visited[i]) { + dfs(i); + } + } + StringBuilder sb = new StringBuilder(); + while(!stack.empty()){ + sb.append(stack.pop()).append(" "); + } + System.out.println(sb); + } +} From 265bb465cf2ed545ef9e88d12aa73b1bdeafca15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=A7=80=EC=9D=80?= Date: Wed, 12 Apr 2023 15:35:09 +0900 Subject: [PATCH 13/17] =?UTF-8?q?:technologist:=20feat:=20=EB=B0=B1?= =?UTF-8?q?=EC=A4=80=203665=EB=B2=88=20=EC=B5=9C=EC=A2=85=20=EC=88=9C?= =?UTF-8?q?=EC=9C=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/baekjoon/BOJ3665.java | 89 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 src/baekjoon/BOJ3665.java diff --git a/src/baekjoon/BOJ3665.java b/src/baekjoon/BOJ3665.java new file mode 100644 index 0000000..015e554 --- /dev/null +++ b/src/baekjoon/BOJ3665.java @@ -0,0 +1,89 @@ +package baekjoon; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.StringTokenizer; + +public class BOJ3665 { + + static boolean [][] adjMatrix; + static boolean [] visited; + static int N; + static List order; + + static void dfs(int current){ + visited[current] = true; + for (int i = 1; i <= N; i++) { + if (adjMatrix[current][i] && !visited[i]){ + dfs(i); + } + } + order.add(current); + } + + static boolean isPossible() { + for (int i = 0; i < N; i++) { + for (int j = i+1; j < N; j++) { + if (adjMatrix[order.get(j)][order.get(i)]) + return false; + } + } + return true; + } + + static void topologicalSort() { + StringBuilder sb = new StringBuilder(); + for (int i = 1; i <= N; i++) { + if (!visited[i]) + dfs(i); + } + Collections.reverse(order); + if (isPossible()){ + for (int i = 0; i < N; i++) { + sb.append(order.get(i)).append(" "); + } + } else { + sb.append("IMPOSSIBLE"); + } + System.out.println(sb); + } + + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + int T = Integer.parseInt(br.readLine()); + for (int t = 0; t < T; t++) { + N = Integer.parseInt(br.readLine()); + adjMatrix = new boolean[N+1][N+1]; + visited = new boolean[N+1]; + order = new ArrayList<>(); + int[] origin_ranking = new int[N+1]; + StringTokenizer st = new StringTokenizer(br.readLine()); + for (int i = 1; i <= N; i++) { + origin_ranking[i] = Integer.parseInt(st.nextToken()); + } + for (int i = 1; i <= N; i++) { + for (int j = i+1; j <= N; j++) { + adjMatrix[origin_ranking[i]][origin_ranking[j]]=true; + } + } + int M = Integer.parseInt(br.readLine()); + for (int i = 0; i < M; i++) { + st = new StringTokenizer(br.readLine()); + int a = Integer.parseInt(st.nextToken()); + int b = Integer.parseInt(st.nextToken()); + if (adjMatrix[a][b]){ + adjMatrix[a][b]=false; + adjMatrix[b][a]=true; + } else { + adjMatrix[a][b]=true; + adjMatrix[b][a]=false; + } + } + topologicalSort(); + } + } +} From 2585fcae98c3a5ad0e7d7501d9e4db29be830245 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=A7=80=EC=9D=80?= Date: Wed, 12 Apr 2023 16:37:45 +0900 Subject: [PATCH 14/17] =?UTF-8?q?:technologist:=20feat:=20=EB=B0=B1?= =?UTF-8?q?=EC=A4=80=202667=EB=B2=88=20=EB=8B=A8=EC=A7=80=EB=B2=88?= =?UTF-8?q?=ED=98=B8=EB=B6=99=EC=9D=B4=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/baekjoon/BOJ2667.java | 60 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 src/baekjoon/BOJ2667.java diff --git a/src/baekjoon/BOJ2667.java b/src/baekjoon/BOJ2667.java new file mode 100644 index 0000000..aea1f61 --- /dev/null +++ b/src/baekjoon/BOJ2667.java @@ -0,0 +1,60 @@ +package baekjoon; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public class BOJ2667 { + static int N; + static boolean [][] map; + static boolean [][] visited; + static int[] dx = {1, -1, 0, 0}; + static int[] dy = {0, 0, -1, 1}; + static int count; + static List list = new ArrayList<>(); + + static void dfs(int x, int y){ + visited[x][y] = true; + count++; + for (int i = 0; i < 4; i++) { + int nx = x + dx[i]; + int ny = y + dy[i]; + if (nx >= 0 && ny >=0 && nx < N && ny < N && map[nx][ny] && !visited[nx][ny]){ + dfs(nx, ny); + } + } + } + + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + N = Integer.parseInt(br.readLine()); + map = new boolean[N][N]; + visited = new boolean[N][N]; + for (int i = 0; i < N; i++) { + String input = br.readLine(); + for (int j = 0; j < N; j++) { + if (input.charAt(j) == '1') + map[i][j] = true; + } + } + for (int i = 0; i < N; i++) { + for (int j = 0; j < N; j++) { + if (map[i][j] && !visited[i][j]){ + dfs(i, j); + list.add(count); + count = 0; + } + } + } + StringBuilder sb = new StringBuilder(); + sb.append(list.size()).append("\n"); + Collections.sort(list); + for (int i = 0; i < list.size(); i++) { + sb.append(list.get(i)).append("\n"); + } + System.out.print(sb); + } +} From 494d89921eb3bd9b87fccc296a85115e90849abb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=A7=80=EC=9D=80?= Date: Wed, 12 Apr 2023 17:37:54 +0900 Subject: [PATCH 15/17] =?UTF-8?q?:technologist:=20feat:=20=EB=B0=B1?= =?UTF-8?q?=EC=A4=80=201520=EB=B2=88=20=EB=82=B4=EB=A6=AC=EB=A7=89=20?= =?UTF-8?q?=EA=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/baekjoon/BOJ1520.java | 49 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 src/baekjoon/BOJ1520.java diff --git a/src/baekjoon/BOJ1520.java b/src/baekjoon/BOJ1520.java new file mode 100644 index 0000000..82d4ae3 --- /dev/null +++ b/src/baekjoon/BOJ1520.java @@ -0,0 +1,49 @@ +package baekjoon; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.StringTokenizer; + +public class BOJ1520 { + static int N, M; + static int[][] map; + static int[][] dp; + static int[] dx = {1, -1, 0, 0}; + static int[] dy = {0, 0, -1, 1}; + + static int dfs(int x, int y) { + dp[x][y] = 0; + for (int i = 0; i < 4; i++) { + int nx = x + dx[i]; + int ny = y + dy[i]; + if (nx >= 0 && ny >= 0 && nx < M && ny < N && map[x][y] > map[nx][ny]) { + if (dp[nx][ny] == -1) { + dp[x][y] += dfs(nx, ny); + } else { + dp[x][y] += dp[nx][ny]; + } + } + } + return dp[x][y]; + } + + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + M = Integer.parseInt(st.nextToken()); + N = Integer.parseInt(st.nextToken()); + map = new int[M][N]; + dp = new int[M][N]; + for (int i = 0; i < M; i++) { + st = new StringTokenizer(br.readLine()); + for (int j = 0; j < N; j++) { + map[i][j] = Integer.parseInt(st.nextToken()); + dp[i][j] = -1; + } + } + dp[M - 1][N - 1] = 1; + dfs(0, 0); + System.out.println(dp[0][0]); + } +} From f180f9dda3833ac545874c801ea9f9c1165c9212 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=A7=80=EC=9D=80?= Date: Thu, 13 Apr 2023 10:19:31 +0900 Subject: [PATCH 16/17] =?UTF-8?q?:technologist:=20feat:=20=EB=B0=B1?= =?UTF-8?q?=EC=A4=80=201937=EB=B2=88=20=EC=9A=95=EC=8B=AC=EC=9F=81?= =?UTF-8?q?=EC=9D=B4=20=ED=8C=90=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/baekjoon/BOJ1937.java | 55 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 src/baekjoon/BOJ1937.java diff --git a/src/baekjoon/BOJ1937.java b/src/baekjoon/BOJ1937.java new file mode 100644 index 0000000..ca1673e --- /dev/null +++ b/src/baekjoon/BOJ1937.java @@ -0,0 +1,55 @@ +package baekjoon; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.StringTokenizer; + +public class BOJ1937 { + static int [][] map; + static int [][] dp; + static int N; + static int[] dx = {1, -1, 0, 0}; + static int[] dy = {0, 0, -1, 1}; + static int answer = Integer.MIN_VALUE; + + static int dfs(int x, int y){ + dp[x][y]=1; + for (int i = 0; i < 4; i++) { + int nx = x + dx[i]; + int ny = y + dy[i]; + if (nx >= 0 && ny >= 0 && nx < N && ny < N && map[x][y] < map[nx][ny]){ + if (dp[nx][ny] == -1){ + dp[x][y] = Math.max(dfs(nx, ny)+1, dp[x][y]); + } else { + dp[x][y] = Math.max(dp[nx][ny]+1, dp[x][y]); + } + } + } + answer = Math.max(dp[x][y], answer); + return dp[x][y]; + } + + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + N = Integer.parseInt(br.readLine()); + StringTokenizer st; + map = new int[N][N]; + dp = new int[N][N]; + for (int i = 0; i Date: Thu, 13 Apr 2023 12:24:41 +0900 Subject: [PATCH 17/17] =?UTF-8?q?:technologist:=20feat:=20=EB=B0=B1?= =?UTF-8?q?=EC=A4=80=202623=EB=B2=88=20=EC=9D=8C=EC=95=85=ED=94=84?= =?UTF-8?q?=EB=A1=9C=EA=B7=B8=EB=9E=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/baekjoon/BOJ2623.java | 69 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 src/baekjoon/BOJ2623.java diff --git a/src/baekjoon/BOJ2623.java b/src/baekjoon/BOJ2623.java new file mode 100644 index 0000000..3c913fa --- /dev/null +++ b/src/baekjoon/BOJ2623.java @@ -0,0 +1,69 @@ +package baekjoon; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.StringTokenizer; + +public class BOJ2623 { + static int N; + static boolean [][] adjMatrix; + static boolean [] visited; + static List order = new ArrayList<>(); + + private static void dfs(int current){ + visited[current] = true; + for (int i = 1; i <= N; i++) { + if (adjMatrix[current][i] && !visited[i]){ + dfs(i); + } + } + order.add(current); + } + + private static boolean isPossilbe(){ + for (int i = 0; i < N; i++) { + for (int j = i+1; j < N ; j++) { + if (adjMatrix[order.get(j)][order.get(i)]) + return false; + } + } + return true; + } + + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + StringTokenizer st = new StringTokenizer(br.readLine()); + StringBuilder sb = new StringBuilder(); + N = Integer.parseInt(st.nextToken()); + int M = Integer.parseInt(st.nextToken()); + adjMatrix = new boolean[N + 1][N + 1]; + visited = new boolean[N + 1]; + for (int i = 0; i < M; i++) { + st = new StringTokenizer(br.readLine()); + int cnt = Integer.parseInt(st.nextToken()); + int from = Integer.parseInt(st.nextToken()); + for (int j = 1; j < cnt; j++) { + int to = Integer.parseInt(st.nextToken()); + adjMatrix[from][to]=true; + from = to; + } + } + for (int i = 1; i <= N; i++) { + if (!visited[i]) + dfs(i); + } + Collections.reverse(order); + if (isPossilbe()){ + for (int i = 0; i < N; i++) { + sb.append(order.get(i)).append("\n"); + } + } else { + sb.append(0); + } + System.out.println(sb); + } +}