Algorithm
[BAEKJOON] 9251번 : LCS (JAVA)
멍목
2023. 4. 7. 23:15
반응형
- 알고리즘 분류 : DP
- 사용 언어 : JAVA
소스 설명은 주석을 참고해주세요.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str1 = br.readLine();
int str1Length = str1.length();
String str2 = br.readLine();
int str2Length = str2.length();
int[][] dp = new int[str2Length+1][str1Length+1];
for(int i = 1; i <= str2Length; i++) {
char C = str2.charAt(i-1);
for(int j = 1; j <= str1Length; j++) {
// str1의 문자와 str2의 문자가 같으면 1 증가
if(C == str1.charAt(j-1))
dp[i][j] = dp[i-1][j-1] + 1;
// 다르다면, 이전크기와 그 전 줄의 최댓값을 넣어준다.
else
dp[i][j] = Math.max(dp[i][j-1], dp[i-1][j]);
}
}
System.out.println(dp[str2Length][str1Length]);
}
}
반응형