Problem Solving/Baekjoon
[백준] 5582 공통 부분 문자열 - Dynamic Programming / Java
graycode
2023. 1. 11. 21:44
• 문제 링크
5582번: 공통 부분 문자열
두 문자열이 주어졌을 때, 두 문자열에 모두 포함된 가장 긴 공통 부분 문자열을 찾는 프로그램을 작성하시오. 어떤 문자열 s의 부분 문자열 t란, s에 t가 연속으로 나타나는 것을 말한다. 예를 들
www.acmicpc.net
• 풀이 과정
• 풀이 코드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String a = br.readLine();
String b = br.readLine();
int[][] dp = new int[a.length() + 1][b.length() + 1];
int max = 0;
for (int i = 0; i < a.length(); i++) {
for (int j = 0; j < b.length(); j++) {
if (a.charAt(i) == b.charAt(j)) {
dp[i + 1][j + 1] = dp[i][j] + 1;
max = Math.max(max, dp[i + 1][j + 1]);
}
}
}
bw.write(String.valueOf(max));
bw.flush();
}
}