[백준 1958] LCS 3

Junyoung Park·2022년 5월 29일
0

코딩테스트

목록 보기
447/631
post-thumbnail

1. 문제 설명

LCS 3

2. 문제 분석

공통 부분 문자열에서 사용했던 기법을 통해 비교한다. 이번에 비교할 문자열은 총 세 개이므로 삼차원 배열을 만들어 DP에 기록, 최댓값을 업데이트했다.

3. 나의 풀이

import sys

str1 = sys.stdin.readline().rstrip()
str2 = sys.stdin.readline().rstrip()
str3 = sys.stdin.readline().rstrip()

numbers = [[[0 for _ in range(len(str3) + 1)] for _ in range(len(str2) + 1)] for _ in range(len(str1) + 1)]
answer = 0
for i in range(1, len(str1) + 1):
    for j in range(1, len(str2) + 1):
        for k in range(1, len(str3) + 1):
            if str1[i-1] == str2[j-1] and str2[j-1] == str3[k-1]:
                numbers[i][j][k] = numbers[i-1][j-1][k-1] + 1
            else:
                numbers[i][j][k] = max(numbers[i-1][j][k], numbers[i][j-1][k], numbers[i][j][k-1])
            answer = max(answer, numbers[i][j][k])

print(answer)
profile
JUST DO IT

0개의 댓글