๋ฌธ์
๋ฌธ์
์ธ์ค์ด๋ ์ด๋ค ๋ฌธ์์ด์ ํฐ๋ฆฐ๋๋กฌ์ผ๋ก ๋ถํ ํ๋ ค๊ณ ํ๋ค. ์๋ฅผ ๋ค์ด, ABACABA๋ฅผ ํฐ๋ฆฐ๋๋กฌ์ผ๋ก ๋ถํ ํ๋ฉด, {A, B, A, C, A, B, A}, {A, BACAB, A}, {ABA, C, ABA}, {ABACABA}๋ฑ์ด ์๋ค.
๋ถํ ์ ๊ฐ์์ ์ต์๊ฐ์ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ๋ฌธ์์ด์ด ์ฃผ์ด์ง๋ค. ์ด ๋ฌธ์์ด์ ์ต๋๊ธธ์ด๋ 2,500์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ํฐ๋ฆฐ๋๋กฌ ๋ถํ ์ ๊ฐ์์ ์ต์๊ฐ์ ์ถ๋ ฅํ๋ค.
ํ์ด๊ณผ์
1.๊ท์น
- dp์ด๋ฏ๋ก ์ ํ์๊ณผ ๋ฉ๋ชจ์ด์ ์ด์ ์ ์ด์ฉํฉ๋๋ค.
- ๋ฌธ์์ด์ ๋ถํ ํ ์ ์๋ ์ต์๊ฐ์ ์ถ๋ ฅํฉ๋๋ค.
2.์์
ํฐ๋ฆฐ๋๋กฌ?(https://it-and-life.tistory.com/137)์์ ์ฝ๊ฐ ๋ณํ๋ ๋ฌธ์ ๋ก, ๋ฌธ์์ด์ ์ด๋ป๊ฒ ์ต์๊ฐ์ ํฐ๋ฆฐ๋๋กฌ์ผ๋ก ๋๋์ ์๋์ง๋ฅผ ๊ตฌํ๋ผ๋ ๋ฌธ์ ์์ต๋๋ค.
์๋ฅผ๋ค์ด BBC๋ผ๋ฉด, ์ต์ํ์ผ๋ก ๋๋ ์ ์๋ ๊ฒฝ์ฐ๋ {BB},{C}๋ก 2๊ฐ์ง ์ ๋๋ค. {C}ํ๋์ธ ๋ฌธ์์ด๋ ํฐ๋ฆฐ๋๋กฌ์ผ๋ก ์ทจ๊ธํ๊ธฐ ๋๋ฌธ์ ๋๋ค.(๊ฒฐ๊ตญ ์๊ธฐ์์ ์ ๋ฌด์กฐ๊ฑด ํฐ๋ฆฐ๋๋กฌ์ผ๋ก ์ทจ๊ธํด์ผ ํฉ๋๋ค.)
๋จผ์ 2์ฐจ๋ฐฐ์ด์ ๋ง๋ค๊ณ ๋ฌธ์์ด์์ ํฐ๋ฆฐ๋๋กฌ์ด ์๋๊ฒฝ์ฐ๋ฅผ ์ฒดํฌํด๋ก๋๋ค.
pld[3][3] |
1 |
2 |
3 |
1 |
pld[1][1]=B,B=1 |
pld[1][2]=B,B=1 |
pld[1][3]=B,C=0 |
2 |
pld[2][1]=0 (์ด๋ฏธ p[1][2]=1 ์ด๋ฏ๋ก ๋ณ๊ฒฝX) |
pld[2][2]=B,B=1 |
pld[2][3]=B,C=0 |
3 |
pld[3][1]=C,B=0 |
pld[3][2]=C,B=0 |
pld[3][3]=C,C=1 |
ํฐ๋ฆฐ๋๋กฌ์ผ ๊ฒฝ์ฐ(๋นจ๊ฐ๋ค๋ชจ)์๋ง ๊ฐฏ์๋ฅผ +1์ฆ๊ฐํด์ฃผ๋ dp๋ฅผ ์ด์ฉํด ์ต์๊ฐ์ ์ ์งํด์ผ ํฉ๋๋ค.
pld[0][0] = dp[0] = 0
pld[1][1] = B,B(์๊ธฐ ์์ ์ ํฐ๋ฆฐ๋๋กฌ. dp[0]+1 ์ด๋ผ ์๊ฐํฉ๋๋ค.) = dp[1] = 1
pld[1][2] = B,B(ํฐ๋ฆฐ๋๋กฌ์ด๋ฏ๋ก, dp[0]+1์ด๋ผ ์๊ฐํฉ๋๋ค.) = dp[2] = 1
pld[2][2] = B,B(ํฐ๋ฆฐ๋๋กฌ์ด๋ฏ๋ก, dp[1]+1์ด๋ผ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฌ๋ dp[1]+1=2 > dp[2] = 1์ด๊ธฐ์ ์ต์๊ฐ์ ์ ์งํด์ผ ํ๋ฏ๋ก 1์ ์ ์งํฉ๋๋ค.) = dp[2] = 1
pld[1][3] = B,C(ํฐ๋ฆฐ๋๋กฌX)
pld[2][3] = B,C(ํฐ๋ฆฐ๋๋กฌX)
pld[3][3] = C,C(ํฐ๋ฆฐ๋๋กฌ์ด๋ฏ๋ก, dp[2]+1์ด๋ผ ์๊ฐํฉ๋๋ค.) = dp[3] = 2
์ ๋ต์ธ 2๋ฅผ ์ ์ถํ์ผ๋ฏ๋ก,
์ ํ์์ (i : 1~(N-1) , j : 1~i) ์ผ๋ pld[j][i]๊ฐ ํฐ๋ฆฐ๋๋กฌ์ผ ๊ฒฝ์ฐ, dp[i] = min(dp[i], dp[j-1]+1) ๊ฐ ๋ฉ๋๋ค.
3.์ฝ๋
'๐ค PS(Problem Solving) > ๋ฐฑ์ค(BOJ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค/c++] 2294๋ฒ - ๋์ 2 (0) | 2019.08.11 |
---|---|
[๋ฐฑ์ค/c++] 2293๋ฒ - ๋์ 1 (0) | 2019.08.11 |
[๋ฐฑ์ค/c++] 10828๋ฒ - ์คํ (0) | 2019.08.06 |
[๋ฐฑ์ค/c++] 10942๋ฒ - ํฐ๋ฆฐ๋๋กฌ? (0) | 2019.08.04 |
[๋ฐฑ์ค/c++] 1890๋ฒ - ์ ํ (0) | 2019.08.03 |