- ํด๋ฅผ ๋ถ์ํด์ ๋ถ๋ฌธ์ ๋ก ๋ถํ ํ๊ธฐ
- ๋ถ๋ฌธ์ ์ ํด๋ก ํฐ ๋ฌธ์ ์ ํด๋ฅผ ํํ(์ ํ์)
- ๋ถ๋ฌธ์ ๋ค์ ํด๋ฅผ ๊ฐ์ง๊ณ ์๋ dp table์ ์ฑ์ฐ๊ธฐ
- table์์ ํด๋ฅผ ๊ณ์ฐํ์ฌ ์๊ณ ๋ฆฌ์ฆ์ correctness ๊ฒ์ฆ
stringA : ACAYKP stringB: CAPCAK
An๊ณผ Bm์ ์ต์ฅ๊ธธ์ด ๊ณตํต ๋ถ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ๊ตฌํด์ผ ํจ ์ด๋ฅผ ์ด๋ป๊ฒ ์์ ๋ฌธ์ ๋ค๋ก ์ชผ๊ฐค ์ ์์๊น? LCS(i,j) โ Ai๊ณผ Bj์ LCS ๊ธธ์ด Ai์ Bj๊ฐ ์๋ก ๊ฐ๋ค๋ฉด ์ต์ฅ๊ธธ์ด ๊ณตํต ๋ฌธ์์ด์ ์ถ๊ฐ๋๋ค. ์ด๋ ๊ณง ์ด ๋ ๋ฌธ์์ด์ ๋น๊ตํ์ ๋, ๋ ๋ฌธ์์ด์ด ์๋ก ๊ฐ๋ค๋ฉด ๊ธธ์ด๊ฐ 1 ์ฆ๊ฐํ๋ค๋ ๋ป์ด๋ค. ๋๋จธ์ง๋
- A1,A2,โฆAi-1
- B1,B2,โฆBj-1 ๋ก ๋๋์ด ์ง ์ ์๋ค. ๊ทธ๋ ๋ค๋ฉด ์ด ๋ฌธ์์ด๋ค์ ๋ํด์๋ ๊ณ์ ๊ณตํต ๋ฌธ์์ด์ ๋น๊ตํ๋ฉด์ ๋์๊ฐ๋ฉด ๋์ง ์์๊น?
- ๋ง์ง๋ง ๋ ๋ฌธ์์ด์ด ๊ฐ์ ๋ : LCS(i,j) = LCS(i-1,j-1) + 1 ๋ผ๊ณ ๋ณผ ์ ์๋ค. ํ์ง๋ง ๋ง์ง๋ง ๋ ๋ฌธ์์ด์ด ๋ค๋ฅผ ๋๋ ๊ฐ๋จํ๊ฒ LCS(i,j) = LCS(i-1,j-1)๋ผ๊ณ ๋ง ์๊ฐํ๋ฉด ์๋๋ค. ์๋๋ฉด ๋์ค์ A์ ๋ง์ง๋ง ๋ฌธ์์ด์ด ํฌํจ๋์ด ์์ง๋ง B์ ๋ง์ง๋ง ๋ฌธ์์ด์ ํฌํจ๋์ด ์์ง ์์ ์ ์๊ณ , B์ ๋ง์ง๋ง ๋ฌธ์์ด์ด ํฌํจ๋์ด ์์ง๋ง A์ ๋ง์ง๋ง ๋ฌธ์์ด์ ํฌํจ๋์ด ์์ง ์์ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. (์ฌ๊ธฐ์ A,B๋ฌธ์์ด์ด ๋ชจ๋ ๊ฐ์ ๊ฒฝ์ฐ๋ ์ด๋ฏธ ์๋๊ธฐ ๋๋ฌธ์ ์ ์ธํ๋ค) ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๊ฐ ์ํ๋ LCS๋ LCS(i,j-1) ๊ณผ LCS(i-1,j) ์ค ๋ ๊ธธ์ด๊ฐ ๊ธด ๊ฒ์ผ๋ก ์ ํํด์ผ ํ๋ค.
๊ทธ๋ ๋ค๋ฉด ์ด LCS(i,j-1)๊ณผ LCS(i-1,j)๋ฅผ ๋ฏธ๋ฆฌ ๊ตฌํด๋์ผ ํ๋จ ์๋ฆฌ๊ธฐ ๋๋ฌธ์ dp ํ ์ด๋ธ์ ๋ง๋ค์ด์ ์ด์ ๋ํ ๊ฐ์ ๋ฉ๋ชจ์ด์ ์ด์ ํด๋์ผ๋ฉด ๋๋ค.
| 0 | A | C | A | Y | K | P | |
|---|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| C | 0 | 0 | 1 | 1 | 1 | 1 | 1 |
| A | 0 | 1 | 1 | 2 | 2 | 2 | 2 |
| P | 0 | 1 | 1 | 2 | 2 | 2 | 3 |
| C | 0 | 1 | 2 | 2 | 2 | 2 | 3 |
| A | 0 | 1 | 2 | 3 | 3 | 3 | 3 |
| K | 0 | 1 | 2 | 3 | 3 | 4 | 4 |