알고리즘
[백준 알고리즘] 5502번 팰린드롬 만들기. 파이썬(python)
삶은겨란
2022. 10. 26. 17:57
LCS(최장 공통 부분 수열)을 이용해 -> 원래 문자열과 뒤집은 문자열 비교
전체개수(n)-LCS길이(dp[-1][-1])
import sys
input=sys.stdin.readline
n=int(input())
m=list(input().strip())
reverse_m=m[::-1]
dp=[[0]*(n+1) for _ in range(n+1)]
for i in range(1,n+1):
for j in range(1,n+1):
if m[i-1]!=reverse_m[j-1]:
dp[i][j]=max(dp[i][j-1], dp[i-1][j])
else:
dp[i][j]=dp[i-1][j-1]+1
print(n-dp[-1][-1])