반응형
https://www.acmicpc.net/problem/15482
15482번: 한글 LCS
첫째 줄과 둘째 줄에 두 문자열이 주어진다. 문자열은 최대 1000글자이고, 유니코드 U+AC00(가)부터 U+D7A3(힣)까지로만 이루어져 있으며, UTF-8로 인코딩 되어 있다.
www.acmicpc.net
- 문제
- 풀이 방법
이 문제는 전형적인 DP의 LCS 문제이다. 조금 더 디테일한 풀이는 밑에 링크를 참고하면 되겠다.
https://propercoding.tistory.com/entry/알고리즘-LCS-최장-공통-부분-수열
[알고리즘] LCS (최장 공통 부분 수열)
목차 LCS란? LCS는 Longest Common Subsequence의 약자이다. 말 그대로 가장 긴 공통된 부분 수열이다. LCS는 보통 주어진 두 수열에서 각각의 부분 수열들 중, 서로 같은 부분 수열 중에서 가장 긴 부분 수
propercoding.tistory.com
- 풀이
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s1 = br.readLine();
String s2 = br.readLine();
int n = s1.length();
int m = s2.length();
int[][] dp = new int[n+1][m+1];
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (s1.charAt(i) == s2.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.print(dp[n][m]);
}
}
- 후기
되게 전형적인 LCS 문제여서 LCS 이론을 아는 사람은 쉽게 풀 수 있는 문제였다.
반응형
'백준' 카테고리의 다른 글
[백준] 2583번 : 영역 구하기 – JAVA [자바] (0) | 2022.02.04 |
---|---|
[백준] 10026번 : 적록색약 – JAVA [자바] (0) | 2022.01.31 |
[백준] 16948번 : 데스 나이트 – JAVA [자바] (0) | 2022.01.29 |
[백준] 17213번 : 과일 서리 – JAVA [자바] (0) | 2022.01.27 |
[백준] 15990번 : 1, 2, 3 더하기 5 – JAVA [자바] (0) | 2022.01.26 |
댓글