티스토리 뷰

알고리즘/백준

[BAEKJOON]9251 LCS

응애~ 개발자 2024. 2. 15. 16:10
728x90
반응형

문제 요약

 

9251번: LCS

LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다.

www.acmicpc.net

문제풀이

 이번 문제에는 동적계획법 알고리즘 대표적인 문제인 LCS이다. LCS에 대한 개념은 아래 사이트에서 확인해보면 된다.

https://jih3508.tistory.com/191

 

[알고리즘 이론] LCS(Longest Increasing Subsequence) 최장 증가 부분 수열

이론 1. LCS이란? LCS 개념을 이해하기 전에 기본적으로 DP(동적 계획법)또는 이분탐색을 알아야 된다. DP 에 관련 내용은 아래 사이트에 참조하면된다. https://jih3508.tistory.com/89 [알고리즘 이론] 동적

jih3508.tistory.com

 위에 대한 내용 개념을 제대로 알면 문제 푸는데는 지장 없을거라고 생각한다.

Code

Python

X = input()
Y = input()
xLenth = len(X)
yLenth = len(Y)

dp = [[0] * (yLenth + 1) for _ in range(xLenth + 1)]

for i in range(1, xLenth + 1):
    for j in range(1, yLenth + 1):
        if X[i - 1] == Y[j - 1]:
            dp[i][j] = dp[i - 1][j - 1] + 1
        else:
            dp[i][j] = max(dp[i - 1][j], dp[i][j - 1])

print(dp[xLenth][yLenth])

Java

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

public class Main {
	
	
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		char[] X = br.readLine().toCharArray();
		char[] Y = br.readLine().toCharArray();
		
		int xLegth = X.length;
		int yLegth = Y.length;
		
		int[][] dp =  new int[xLegth + 1][yLegth + 1];
		Arrays.stream(dp).forEach(array -> Arrays.setAll(array, x -> 0));
		
		for(int i = 1; i <= xLegth; i++) {
			for(int j = 1; j <= yLegth; j++) {
				if(X[i - 1] == Y[j - 1]) {
					dp[i][j] = dp[i-1][j-1] + 1;
				}else {
					dp[i][j] = Math.max(dp[i-1][j], dp[i][j-1]);
				}
			}
		}
		
		System.out.println(dp[xLegth][yLegth]);
			
	}
	
}
728x90
반응형

'알고리즘 > 백준' 카테고리의 다른 글

[BAEKJOON]1182 부분수열의 합  (0) 2024.02.16
[BAEKJOON]10819 차이를 최대로  (0) 2024.02.16
[BAEKJOON]14606 피자 (Small)  (0) 2024.02.01
[BAEKJOON]2193 이친수  (2) 2024.01.29
[BAEKJOON]21736 헌내기는 친구가 필요해  (4) 2024.01.13
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함