๋ฌธ์
ํ์ด
1. ์ฃผ์ด์ง ์์ด์์ ํฐ๋ฆฐ๋๋กฌ ์์ด์ ๊ตฌํ๋ค.
12342์ ๋ถ๋ถ ์์ด ์ค ํฐ๋ฆฐ๋๋กฌ์ 242(12342)์ด๋ค.
2. ํฐ๋ฆฐ๋๋กฌ์ ์ ๊ฐ์ด๋ฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ์์ด์ ๋๋๋ค.
123 4 2
3. ํฐ๋ฆฐ๋๋กฌ์ด ์๋ ์๋ฅผ ๋ฐ๋ํธ์ ์ถ๊ฐํ๋ค.
123 4 321
์์ด์์ ์ด๋ฏธ ํฐ๋ฆฐ๋๋กฌ์ธ ์์ด์ ๊ตฌํ๊ณ , ํฐ๋ฆฐ๋๋กฌ์ด ์๋ ์๋ง ์ถ๊ฐํ๋ฉด ๋๋ฏ๋ก ์ต์ ์ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
๋๋ค๋ฅธ ์์
ํฐ๋ฆฐ๋๋กฌ์ ์ฐพ๋ ๊ณผ์ ์์ DP๊ฐ ์ด์ฉ๋๋ค.
[์์ด A] 12342
[์์ด A๋ฅผ ๋ค์ง์ ์์ด B] 24321
์ด ์๋ค๊ณ ๊ฐ์ ํด๋ณด์.
์์ด A์ ์์ด B์ ์ต์ฅ ๊ณตํต ๋ถ๋ถ ์์ด(LCS)์ด ๊ณง ํฐ๋ฆฐ๋๋กฌ ์์ด์ด๋ค.
(์์ด A๋ฅผ ๋ค์ง์์ ๋์ ๋ถ๋ถ ์์ด = ์์ด A์ ๋ถ๋ถ ์์ด ์ด๋ฏ๋ก, ํฐ๋ฆฐ๋๋กฌ ์์ด์ ์กฐ๊ฑด์ ์๊ฐํด๋ด๋ผ)
๋ง๋ก ์ค๋ช ํ๊ธฐ๊ฐ ์ฐธ ์ด๋ ต๋ค...
์ต์ฅ ๊ณตํต ์์ด์ ๊ตฌํ๋ ๋ฐฉ๋ฒ์ ๋ค์์ ์ฐธ๊ณ
https://ku-hug.tistory.com/120
์ฝ๋
import sys
input = sys.stdin.readline
n = int(input())
arr = list(map(int, input().split()))
dp = [[0] * (n + 1) for _ in range(n + 1)]
for i in range(1, n + 1):
for j in range(1, n + 1):
if arr[-i] == arr[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(n - dp[-1][-1])
๋ง๋ฌด๋ฆฌ
https://js1jj2sk3.tistory.com/45
์๋ ์ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํ์ฌ ํ๋ คํ์ผ๋... ์ด๋ค ๋ฐฉ๋ฒ์ ์จ๋ ๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ๊ฐ ๋์ ๋ฐฉ๋ฒ์ ๋ฐ๊ฟจ๋ค...