자료구조&알고리즘
백준 | [파이썬 Python] 9251 LCS
두잇 두두
2024. 5. 7. 22:22
728x90
코드
first_string = input()
second_string = input()
h,w = len(first_string), len(second_string)
cache = [[0]*(w+1) for _ in range(h+1)]
for i in range(1, h+1):
for j in range(1, w+1):
if first_string[i-1] == second_string[j-1]:
cache[i][j] = cache[i-1][j-1]+1
else:
cache[i][j] = max(cache[i][j-1], cache[i-1][j])
print(cache[-1][-1])
설명
두 개의 string을 2차원 배열로 비교하는 것으로 접근하면 된다
ACAYKP
CAPCAK
A C A Y K P
C 0, 1, 1, 1, 1, 1
A 1, 1, 1, 2, 2, 2
P 1, 2, 2, 2, 3, 3
C 1, 2, 2, 2, 3, 3
A 1, 2, 2, 2, 3, 3
K 1, 2, 2, 2, 3, 4
배운 점