diff --git "a/\353\260\261\354\244\200/Gold/9251.\342\200\205LCS/LCS.py" "b/\353\260\261\354\244\200/Gold/9251.\342\200\205LCS/LCS.py" new file mode 100644 index 0000000..2f6a5d2 --- /dev/null +++ "b/\353\260\261\354\244\200/Gold/9251.\342\200\205LCS/LCS.py" @@ -0,0 +1,23 @@ +import sys + + +def lcs(firstString, secondString): + firstLen = len(firstString) + secondLen = len(secondString) + + dp = [[0 for _ in range(secondLen + 1)] for _ in range(firstLen + 1)] + + for i in range(1, firstLen + 1): + for j in range(1, secondLen + 1): + if firstString[i - 1] == secondString[j - 1]: + dp[i][j] = dp[i - 1][j - 1] + 1 + else: + dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]) + + return dp[firstLen][secondLen] + + +firstString = sys.stdin.readline().strip() +secondString = sys.stdin.readline().strip() + +print(lcs(firstString, secondString)) \ No newline at end of file diff --git "a/\353\260\261\354\244\200/Gold/9251.\342\200\205LCS/README.md" "b/\353\260\261\354\244\200/Gold/9251.\342\200\205LCS/README.md" new file mode 100644 index 0000000..cdac1bc --- /dev/null +++ "b/\353\260\261\354\244\200/Gold/9251.\342\200\205LCS/README.md" @@ -0,0 +1,30 @@ +# [Gold V] LCS - 9251 + +[문제 링크](https://www.acmicpc.net/problem/9251) + +### 성능 요약 + +메모리: 56528 KB, 시간: 376 ms + +### 분류 + +다이나믹 프로그래밍, 문자열 + +### 제출 일자 + +2024년 1월 30일 21:35:04 + +### 문제 설명 + +

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

+ +

예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다.

+ +### 입력 + +

첫째 줄과 둘째 줄에 두 문자열이 주어진다. 문자열은 알파벳 대문자로만 이루어져 있으며, 최대 1000글자로 이루어져 있다.

+ +### 출력 + +

첫째 줄에 입력으로 주어진 두 문자열의 LCS의 길이를 출력한다.

+