-
[백준 9251번] LCSCoding Test/백준 2021. 2. 8. 21:12
# 문제

내 풀이 - 문제 풀이 실패, 수정 답안
str1 = input() str2 = input() dp = [[0] * 1001 for _ in range(1001)] # 최장 공통 부분 수열(LCS) 찾기 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 else: # 추가된 글자가 서로 다를 때 dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]) # 결과 출력 print(dp[len(str1)][len(str2)])생각해볼 점
아직도 완전히 이해는 안가지만 일단 넘어간다. LIS의 응용 문제이지 않을까 생각했는데, 다음에 다시 풀 때 아이디어가 바로 떠오를 것 같진 않다. DP 문제들은 참 종잡을 수 없이 난이도가 튀어나가는 느낌을 받는다...
'Coding Test > 백준' 카테고리의 다른 글
[백준 12865번] 평범한 배낭 (0) 2021.02.14 [백준 1912번] 연속합 (0) 2021.02.14 [백준 2565번] 전깃줄 (0) 2021.02.07 [백준 11054번] 가장 긴 바이토닉 부분 수열 (0) 2021.02.06 [백준 11650번] 좌표 정렬하기 (0) 2021.02.06
