[BaekJoon] ๋ฐฑ์ค 9251๋ฒ : LCS
Updated:
9251๋ฒ : LCS
์ ๋ง ์ด๋ ค์ ๋ ๋ฌธ์ ์ฌ์ ํ์ฐธ์ ๊ณ ๋ฏผํ๋ค ๋ค๋ฅธ ์ฌ๋ ํ์ด๋ฅผ ์ฐธ์กฐํ์ฌ ํ์๋ค..
[๋ฐฑ์ค] 9251๋ฒ C/C++ ํ์ด _ LCS
์ฐ์ ์ด ํ๋ฅผ ์ดํดํ๋๊ฒ ๊ฐ์ฅ ์ค์ํ๋ค.
ACAYKP CAPCAK ์ LCS ๋ฅผ ๊ตฌํ๋ ๊ณผ์ ์ธ๋ฐ DP ๋ฅผ ์ฌ์ฉํ๋ค.
ํ์ ์์๋ ๊ฐ ๋ฌธ์์ด๋ก ๋ง๋ค์ ์๋ LCS ์ ๊ธธ์ด๋ฅผ ์๋ฏธํ๋ค.
์๋ฅผ ๋ค์ด 4ํ 4์ด์ ๋ณด๊ฒ ๋๋ฉด CAP ACA ์ LCS ๊ธธ์ด๋ฅผ ๊ฐ๊ณ ์๋ค.
์ด๋ ๊ฒ ์ฃผ์ด์ง ๋ฌธ์์ด์ ์ชผ๊ฐ์ C A ์ LCS ๋ถํฐ CAPCAK ACAYKP ์ LCS ๋ฅผ ๊ตฌํด๊ฐ๋ฉด ๋๋ค.
ํ๋ฅผ ์ฑ์ฐ๋ ๊ท์น์ ๋ ๊ฐ์ ๋ฌธ์์ด ๋ ๊ฐ์ด ๊ฐ์ ๋ ํ์ ์ข์๋จ ๊ฐ์ 1์ ๋ํ๊ณ
๋ฌธ์์ด ๋ ๊ฐ์ด ๋ค๋ฅผ ๋ ์๋จ๊ณผ ์ผ์ชฝ ๊ฐ ์ค ํฐ ๊ฐ์ ๋ฃ์ผ๋ฉด ๋๋ค.
๋นจ๊ฐ์ ํ๊ดํ์ด ์น ํด์ ธ ์๋ ๊ฒ์ด ๋ ๊ฐ์ ๋ฌธ์์ด ๋ ๊ฐ์ด ๋ค๋ฅธ ๊ฒฝ์ฐ์ด๊ณ
์ด๋ก์ ํ๊ดํ์ด ์น ํด์ ธ ์๋ ๊ฒ์ด ๋ ๊ฐ์ ๋ฌธ์์ด ๋ ๊ฐ์ด ๊ฐ์ ๊ฒฝ์ฐ์ด๋ค.
์ด๋ฐ ํ์ด๋ฅผ ์๊ฐํ๋ ์ฌ๋์ ๋ฌธ์ ๋ฅผ ๋ง์ด ํ์ด์ ๋ณด์ด๋ ๊ฑธ๊น.. ํ์ด๋ ๋ ๋ถํฐ ๋จธ๋ฆฌ๊ฐ ์ข์์ ํ์ด๋ฒ์ด ๋ฐ๋ก ๋ณด์ด๋ ๊ฑธ๊น..
arr1 = input()
arr2 = input()
dp = [[0 for _ in range(len(arr1) + 1)] for _ in range(len(arr2) + 1)]
for i in range(1, len(arr2) + 1):
for j in range(1, len(arr1) + 1):
if arr1[j - 1] == arr2[i - 1]:
dp[i][j] = dp[i - 1][j - 1] + 1
else:
dp[i][j] = max(dp[i][j - 1], dp[i - 1][j])
print(dp[len(arr2)][len(arr1)])
Leave a comment