코딩 테스트/Baekjoon

G5 9251. LCS

  • -
728x90
반응형

문제 보기 :  9251번: LCS


문제

  • 정답률 : 41%


작성 코드

# 입력값
str1 = input() ; len1 = len(str1)
str2 = input() ; len2 = len(str2)

# DP 테이블 초기화
dp = [[0]*(len2+1) for _ in range(len1+1)]

# DP 계산
for i in range(1,len1+1):
    for j in range(1,len2+1):
        if str1[i-1]==str2[j-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[len1][len2])

풀이

1. 두 문자열의 길이에 맞는 DP 테이블을 생성한다.

2. 각 문자를 비교하며 두 경우(같거나 다르거나)에 따라 점화식을 적용한다.

3. 모든 계산이 끝난 후, DP 테이블의 마지막 값이 최장 공통 부분 수열(LCS)의 길이를 나타낸다.

320x100
728x90

'코딩 테스트 > Baekjoon' 카테고리의 다른 글

S1 2583. 영역 구하기  (0) 2025.01.04
S3 13305. 주유소  (0) 2025.01.03
S2 16953. A → B  (0) 2024.12.31
S2 6603. 로또  (0) 2024.12.31
S3 15657. N과 M (8)  (0) 2024.12.30
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.