728x90
▶9251 - LCS
▶문제
LCS(Longest Common Subsequence, 최장 공통부분 수열) 문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다.
예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다.
▶입력
첫째 줄과 둘째 줄에 두 문자열이 주어진다. 문자열은 알파벳 대문자로만 이루어져 있으며, 최대 1000글자로 이루어져 있다.
▶출력
첫째 줄에 입력으로 주어진 두 문자열의 LCS의 길이를 출력한다.
728x90
▶풀이
해당 문제는 dp를 이용해서 풀면 되는 문제이다.
각 문자 길이에 맞게 2차원 dp를 만들어서, 이중 for문으로 비교하면 된다.
골드 5라고 되어있지만 코드 길이나 난이도는 실버라 해도 무방한 문제이다.
a = input()
b = input()
dp = [[0 for _ in range(len(b) + 1)] for _ in range(len(a) + 1)]
for i in range(1, len(a) + 1):
for j in range(1, len(b) + 1):
if a[i - 1] == b[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[-1][-1])
728x90
'BOJ Code > Gold' 카테고리의 다른 글
[백준/BOJ] gold4 - 2665번 미로만들기 (Python) (0) | 2023.05.22 |
---|---|
[백준/BOJ] gold3 - 1865번 웜홀 (Python) (0) | 2023.05.11 |
[백준/BOJ] gold5 - 1068번 트리 (Python) (1) | 2023.05.09 |
[백준/BOJ] gold3 - 1039번 교환 (Python) (0) | 2023.05.09 |
[백준/BOJ] gold2 - 1525번 퍼즐 (Python) (0) | 2023.05.06 |