반응형
출처: https://www.acmicpc.net/problem/5582
Input
ABRACADABRA
ECADADABRBCRDARA
Output
5
공통 부분 연속 문자열을 구하기 위해서 DP 이용.
[점화식]
다음 두 문자열이 주어졌다고 가정하여, 도표를 통해 분석해보자.
ABRAC
BABRDC
→ A[i] == B[j]이면 LCS[i-1][j-1] + 1
→ A[i] != B[j]이면 『0』
결과적으로 다음과 같다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
char[] A = sc.next().toCharArray();
char[] B = sc.next().toCharArray();
int[][] LCS = new int[A.length+1][B.length+1];
int answer = Integer.MIN_VALUE;
for(int i=1; i<=A.length; i++) {
for(int j=1; j<=B.length; j++) {
if(A[i-1] == B[j-1]) {
LCS[i][j] = LCS[i-1][j-1] + 1;
}
answer = Math.max(answer, LCS[i][j]);
}
}
System.out.println(answer);
}
}
반응형
'PS 문제 풀이 > Baekjoon' 카테고리의 다른 글
[BOJ] 백준 9252 LCS 2 (0) | 2021.02.21 |
---|---|
[BOJ] 백준 9251 LCS (0) | 2021.02.21 |
[BOJ] 백준 14891 톱니바퀴 (0) | 2021.02.21 |
[BOJ] 백준 14890 경사로 (0) | 2021.02.21 |
[BOJ] 백준 14889 스타트와 링크 (0) | 2021.02.21 |
댓글