728x90
시간 초과 날 거 알면서도 최대한 줄여보려고 했으나 19%에서 막혔다. 이문제도 dp 를 이용한 것인데 규칙을 이용하면 된다. 시간 초과가 날 거 같은 문제들은 일단 손으로 적으면서 규칙을 찾아야 겠다.
from collections import deque
from itertools import combinations
import sys
a = input()
b = input()
answer = 0
if len(list(a))<len(list(b)):
for i in range(0,len(list(a))-1):
for j in range(i+1,len(list(a))):
k = a[i:j]
if k in b:
if (j-i)>answer:
answer = (j-i)
else:
break
else:
for i in range(0,len(list(b))-1):
for j in range(i+1,len(list(b))):
k = b[i:j]
if k in a:
if (j-i)>answer:
answer = (j-i)
else:
break
print(answer)
해답
import sys
S = sys.stdin.readline().strip()
T = sys.stdin.readline().strip()
dp = [[0] * len(T) for _ in range(len(S))]
answer = 0
for i in range(len(S)):
for j in range(len(T)):
if S[i] == T[j]:
if i == 0 or j == 0:
dp[i][j] = 1
else:
dp[i][j] = dp[i-1][j-1] + 1
answer = max(answer, dp[i][j])
print(answer)728x90
'🟢 알고리즘 문제 풀이 > Baekjoon' 카테고리의 다른 글
| [파이썬] 백준 14179 빗물 (0) | 2023.04.10 |
|---|---|
| [파이썬] 백준 12904 A와 B (0) | 2023.04.09 |
| [파이썬] 백준 15486 퇴사 2 (1) | 2023.04.09 |
| [파이썬] 백준 1717 집합의 표현 (0) | 2023.04.08 |
| [파이썬] 백준 15686 치킨 배달 (0) | 2023.04.07 |