🧫 문제 분석
✔️ 출처
📖 문제

최장 공통 부분 수열 문제로
str1의 i번째 문자와 str2의 j번째 문자가 공통이라면 (같다면)
이전 문자까지 연속된 공통 부분 수열 + 1 (현재 공통 부분)
점화식
LCS[i][j] = LCS[i-1][j-1] + 1; (i >= 1, j >= 1)
🔅 문제 풀이
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str1 = br.readLine();
String str2 = br.readLine();
int str1Len = str1.length();
int str2Len = str2.length();
int[][] LCS = new int[str1Len + 1][str2Len + 1];
int t = 0;
for (int i = 1; i <= str1Len; i++) {
for (int j = 1; j <= str2Len; j++) {
// 공통 문자라면
if (str1.charAt(i - 1) == str2.charAt(j - 1)) {
LCS[i][j] = LCS[i-1][j-1] + 1; // 이전까지의 연속된 공통 부분 수열 + 1 (현재 공통 문자 1개)
}
t = Math.max(LCS[i][j], t);
}
}
System.out.println(t);
}
}
❗ 오답노트 / 필요한 지식
'baekjoon > DP' 카테고리의 다른 글
백준 1670번 : 정상회담 2 [자바] (0) | 2025.05.20 |
---|---|
백준 2157번 : 여행 [자바] (0) | 2025.05.15 |
백준 2302번 : 극장 좌석 [자바] (0) | 2025.05.08 |
백준 2011번 : 암호코드 [자바] (0) | 2025.05.06 |
백준 1965번 : 상자넣기 [자바] (0) | 2025.05.05 |