Search
Duplicate
🥇

공통 부분 문자열

주차
13
문제번호
5582
언어
티어
골드
유형
nj_Blog
O
nj_상태
완료
이해도
풀이
사람
이해도 2
13 more properties

문제링크

코드 제출 기록 (메모리 및 시간)

메모리 : 248460 KB
시간 : 564 ms

Code

answer = 0 str1, str2 = input(), input() #dp=[[0 for _ in range(len(str2) + 1)] for _ in range(len(str1) + 1)] dp=[[0] * (len(str2) + 1) for _ in range(len(str1) + 1)] for i in range(1, len(str1)+1): for j in range(1, len(str2)+1): if (str1[i-1] == str2[j-1]): dp[i][j] = dp[i-1][j-1] + 1 answer = max(dp[i][j], answer) print(answer)
Python
복사

메모

이중 for문을 돌다가 같은 문자를 만나게 되면 그전까지의 공통 부분 문자열 길이 + 1을 저장한다
<2차원 배열 초기화하는 방법>
1.
arr = [[0 for _ in range(A)] for _ in range(B)]
C++
복사
2.
arr = [[0] * (A) for _ in range(B)]
C++
복사
3.
arr = [[0] * A ] * B
C++
복사
마지막 방법은 사용하지 말것!
→ * 을 사용하면, 주소값을 복사하여 2차원 배열을 만드는 것이기 때문에 arr[0][x]을 수정하면 같은 주소를 공유하는 arr[0][x], arr[1][x], arr[2][x] 의 값이 한번에 변경되는 문제가 발생한다.