-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLCS2_9252.java
More file actions
41 lines (37 loc) ยท 1.34 KB
/
Copy pathLCS2_9252.java
File metadata and controls
41 lines (37 loc) ยท 1.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package baekjoon;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class LCS2_9252 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
char[] A = br.readLine().trim().toCharArray();
char[] B = br.readLine().trim().toCharArray();
int[][] lcs_arr = new int[A.length + 1][B.length + 1];
for (int a = 1; a <= A.length; a++) {
for (int b = 1; b <= B.length; b++) {
if (A[a - 1] == B[b - 1]) {
lcs_arr[a][b] = lcs_arr[a - 1][b - 1] + 1;
} else if (lcs_arr[a][b - 1] < lcs_arr[a - 1][b]) {
lcs_arr[a][b] = lcs_arr[a - 1][b];
} else {
lcs_arr[a][b] = lcs_arr[a][b - 1];
}
}
}
StringBuilder sb = new StringBuilder();
int a = A.length;
int b = B.length;
while (0 < lcs_arr[a][b]) {
if (lcs_arr[a][b] == lcs_arr[a][b - 1]) {
b--;
} else if (lcs_arr[a][b] == lcs_arr[a - 1][b]) {
a--;
} else {
sb.append(A[--a]);
b--;
}
}
System.out.println(lcs_arr[A.length][B.length]);
System.out.print(sb.reverse());
}
}