알고리즘 문제
[백준] 9251번 LCS (Longest Common Sequence)
feelcoding
2020. 1. 4. 21:05
728x90
단계별로 풀어보기 동적계획법1의 14단계 문제 LCS
이번 학기 파이썬 수업에서 배웠던 거라 쉽게 풀 수 있었다.
9251번: LCS
LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다.
www.acmicpc.net
public class Baek9251 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String n = in.next();
String m = in.next();
int[][] arr = new int[n.length() + 1][m.length() + 1];
for (int i = 0; i < n.length(); i++) {
for (int j = 0; j < m.length(); j++) {
if (i == 0 || j == 0) {
arr[i][j] = 0;
}
if (n.charAt(i) == m.charAt(j)) {
arr[i + 1][j + 1] = arr[i][j] + 1;
}
else {
arr[i + 1][j + 1] = Integer.max(arr[i][j + 1], arr[i + 1][j]);
}
}
}
System.out.println(arr[n.length()][m.length()]);
}
}
728x90