1. ํ•ด๋ฅผ ๋ถ„์„ํ•ด์„œ ๋ถ€๋ฌธ์ œ๋กœ ๋ถ„ํ• ํ•˜๊ธฐ
  2. ๋ถ€๋ฌธ์ œ์˜ ํ•ด๋กœ ํฐ ๋ฌธ์ œ์˜ ํ•ด๋ฅผ ํ‘œํ˜„(์ ํ™”์‹)
  3. ๋ถ€๋ฌธ์ œ๋“ค์˜ ํ•ด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” dp table์„ ์ฑ„์šฐ๊ธฐ
  4. 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 ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค์–ด์„œ ์ด์— ๋Œ€ํ•œ ๊ฐ’์„ ๋ฉ”๋ชจ์ด์ œ์ด์…˜ ํ•ด๋†“์œผ๋ฉด ๋œ๋‹ค.

0AC
AYKP
00000000
C0011111
A0112222
P0112223
C0122223
A0123333
K0123344