지나가던 개발자
[Python] 백준 9251번(LCS) 문제 풀이 본문
s1 = input()
s2 = input()
lcs = [[0 for col in range(len(s1)+1)] for row 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]:
lcs[i][j] = lcs[i-1][j-1]+1
continue
lcs[i][j] = max(lcs[i-1][j], lcs[i][j-1])
print(max(sum(lcs, [])))
이 문제를 풀고 솔브닥 골드가 되었다...!
LCS를 구하는 알고리즘을 설명한 글은 밑에다가 첨부해 놓겠다. 내가 글을 하나 쓸까 하는 생각도 했지만 밑의 블로그가 너무 잘 써서 그걸 보는 편이 나을 듯 하다.
근데 Python3로 제출하면 시간 초과가 뜨고 PyPy3로 제출해야 맞았다고 뜬다. Python3보다 PyPy3가 빠른데 둘 다 시간 제한이 2초여서 그런 듯 하다.
이 글을 쓰는 데 도움이 되었던 자료들:
'PS > Python' 카테고리의 다른 글
[Python] 백준 6679번(싱기한 네자리 숫자) 문제 풀이 (0) | 2022.10.13 |
---|---|
[Python] 백준 17413번(단어 뒤집기 2) 문제 풀이 (0) | 2022.10.12 |
[Python] 백준 11719번(그대로 출력하기 2) 문제 풀이 (0) | 2022.10.10 |
[Python] 백준 1316번(그룹 단어 체커) 문제 풀이 (0) | 2022.10.10 |
[Python] 백준 1759번(암호 만들기) 문제 풀이 (0) | 2022.10.09 |
Comments