백준 9251은 중간 과정 값을 저장하는 리스트를 2차원으로 써야 되는 문제다.
실행 시간이 더 짧은 다른 사람의 풀이를 보니 문자열의 길이를 구하는 걸 변수에 할당한 다음 사용했다.
import sys
s1 = sys.stdin.readline().rstrip()
s2 = sys.stdin.readline().rstrip()
dp = [[0] * (len(s1)+1) for _ in range(len(s2)+1)]
for i in range(1, len(s2)+1):
for j in range(1, len(s1)+1):
if s1[j-1] == s2[i-1]:
dp[i][j] = dp[i-1][j-1] + 1
else:
dp[i][j] = max(dp[i-1][j], dp[i][j-1])
print(dp[-1][-1])
'Algorithm' 카테고리의 다른 글
[그래프] boj 2667, 4963 - 사방팔방을 한 칸씩 탐색하기 (0) | 2021.01.09 |
---|---|
[DP] boj 11052 - 카드 가장 비싸게 구매하기 (0) | 2021.01.07 |
[DP] boj 9465 - 2행 배열에서 점화식 구하기 (0) | 2021.01.06 |
[그래프] boj 2331 - 반복수열 (0) | 2021.01.04 |
[DP] boj 11057 - 오르막 수 (0) | 2021.01.03 |