일단 두 문자를 입력을 받고 칸을 비교를 한다. (0,0 이 빈칸으로 시작이니)
같으면 증가를 시켜주고 틀리면 옆 아래 같은 걸로 이거를 채워준다.
import java.io.*;
import java.util.*;
import java.lang.*;
public class Main{
public static void main(String []args) throws IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String str=br.readLine();
String str2=br.readLine();
int n=str.length();
int m=str2.length();
int [][]dp=new int[n+1][m+1];
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(str.charAt(i)==str2.charAt(j)){
dp[i+1][j+1]=dp[i][j]+1;
}
else{
dp[i+1][j+1]=Math.max(dp[i+1][j],dp[i][j+1]);
}
}
}
System.out.println(dp[n][m]);
}
}
[알고리즘] LCS (최장 공통 부분 수열)
목차 LCS란? LCS는 Longest Common Subsequence의 약자이다. 말 그대로 가장 긴 공통된 부분 수열이다. LCS는 보통 주어진 두 수열에서 각각의 부분 수열들 중, 서로 같은 부분 수열 중에서 가장 긴 부분 수
propercoding.tistory.com
'프로그래머스 백준 문제' 카테고리의 다른 글
| 코테 Scanner 객체 사용법 (0) | 2026.07.21 |
|---|---|
| 10026번 적록색약 (3) | 2025.07.17 |
| 12015 번 가장 긴 증가하는 부분 수열2 (0) | 2025.07.16 |
| 3986 좋은 단어 (0) | 2025.07.14 |
| 자바 CompareTo 와 Compare 비교 및 차이(1181번,11650번) (0) | 2025.06.21 |