def LCS(a,b,c):
global X,Y,Z
for i in range(1,X+1):
for j in range(1,Y+1):
for k in range(1,Z+1):
if a[i-1] == b[j-1] and b[j-1] == c[k-1]:
LCS_array[i][j][k] = LCS_array[i-1][j-1][k-1] +1
else:
LCS_array[i][j][k] = max(LCS_array[i][j][k], LCS_array[i-1][j][k], LCS_array[i][j-1][k], LCS_array[i][j][k-1])
a = input()
b = input()
c = input()
X = len(a)
Y = len(b)
Z = len(c)
LCS_array = [[[0 for _ in range(Z+1)] for _ in range(Y+1)] for _ in range(X+1)]
LCS(a,b,c)
print(LCS_array[X][Y][Z])
우리가 예전에 했던 LCS를 3차원으로 늘려주면 된다.
1차원만 더 늘려주면 되는 문제라 쉽게 풀 수 있었던 문제였다.
'알고리즘 > 백준' 카테고리의 다른 글
[BOJ/백준] 23290 마법사 상어와 복제 (0) | 2021.10.26 |
---|---|
[BOJ/백준] 23289 온풍기 안녕! (0) | 2021.10.25 |
[BOJ/백준] 2146 다리 만들기 (0) | 2021.09.03 |
[BOJ/백준] 1943 동전 분배 (0) | 2021.09.03 |
[BOJ/백준] 2143 두 배열의 합 (0) | 2021.09.03 |