DP로 해결
- [A길이+1][B길이 +1] 배열을 생성한다.
- for문을 돌며 하나씩 비교해서 저장한다.
- 마지막값을 출력한다.
※ 비교방법)
만약 ABCD와 DEFC를 비교한다면
A B C , D E F C - 비교할 때 같은 문자라면, A B 와 D E F 비교값에 1을 더해준다.
A B C , D E F - 비교할 때 다른 문자라면, A B C 와 D E 비교값과, A B 와 D E F 비교값 중 큰 값을 저장한다.
import sys
input = sys.stdin.readline
A = input().rstrip()
B = input().rstrip()
arr = [[0]*(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]:
arr[i][j] = arr[i-1][j-1]+1
else:
arr[i][j] = max(arr[i-1][j], arr[i][j-1])
print(arr[len(A)][len(B)])
'개발 > 알고리즘' 카테고리의 다른 글
[백준 12865] 평범한 배낭 (python) (0) | 2021.04.08 |
---|---|
[백준 2206] 벽 부수고 이동하기 (python) (0) | 2021.04.07 |
[백준 1753] 최단경로 (python) (0) | 2021.03.30 |
[백준 1918] 후위 표기식 (python) (0) | 2021.03.29 |
[백준 11724] 연결 요소의 개수 (python) (0) | 2021.03.19 |
최근댓글