[์๊ณ ๋ฆฌ์ฆ ์ ๋ฆฌ] ํ๋ ฌ ๊ณฑ์ ๋ฌธ์ (Matrix Chain Multiplication)
DP: Matrix Chain Multiplication (MCM problem)
Dynamic Programming
๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ์ ํน์ ํ ์๊ณ ๋ฆฌ์ฆ์ด๋ผ๊ธฐ ๋ณด๋ค๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ์ํ ์ ๋ต ์ค ํ๋๋ผ๊ณ ํ ์ ์๋ค. ์ธ๋ป ๋ณด๋ฉด Divde-and-Conquer๋ ๋น์ทํด๋ณด์ด์ง๋ง ๋์ ํฐ ์ฐจ์ด๊ฐ ์๋ค.
Optimization
DP๋ ๋ฌธ์ ๋ฅผ ์ต์ ํํ ์ ์๋ ๋ ์์ ๋ฌธ์ ๋ฅผ ์ฐพ์ ์ ์ฐจ ํฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ์์ด๋ค. ๋ง์ฝ ์ด๋ค ๋ฌธ์ ์ Solution์ด S ๋ผ๊ณ ํ๋ค๋ฉด, DP๋ S๋ณด๋ค ์์ ๋ฌธ์ ๋ค์ ์ต์ ์ Solution์ ๋ชจ๋ ๋ชจ์ ํฉ์น ๊ฒ์ด๋ผ๊ณ ํ ์ ์๋ค. ๋ฐ๋ผ์, ๋ ์์ ๋ฌธ์ ๋ฅผ ๋จผ์ ํด๊ฒฐํจ์ผ๋ก ํฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ๋๋ฌธ์, bottom-up ๋ฐฉ์์ด๋ผ๊ณ ํ ์ ์๋ค.
Divde-and-Conquer vs. DP
๋ถํ ์ ๋ณต ์๊ณ ๋ฆฌ์ฆ์ ์ด๋ค ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ ๋ ์์ ๋ฌธ์ ๋ก ์ชผ๊ฐ์ ํด๊ฒฐํ๊ฒ ๋๋๋ฐ, ๋ฌธ์ ๋ ์ด ๊ณผ์ ์์ ๋์ผํ ๋ฌธ์ ๋ฅผ ์ฌ๋ฌ๋ฒ ๋ฐ๋ณตํด์ ํด๊ฒฐํด์ผํ๋ ๋ฌธ์ ๊ฐ ์๊ธฐ๊ฒ ๋๋ค. ํผ๋ณด๋์น ์์ด์ ๋ณด์๋ ํ๋ฒ ๊ณ์ฐ ํ๋ fib(n-1) ์ ๋ค๋ฅธ ๊ฒฝ์ฐ์์ ๋ ๊ณ์ฐํ๊ฒ ๋ ์๋ ์๋ค. ํ์ง๋ง DP๋ ํ ๋ฒ ๊ณ์ฐํ๋ ๊ฐ๋ค์ ๋ฏธ๋ฆฌ table์ ์ ์ฅํด๋๊ณ ๋ค์ ๊ณ์ฐ์์ ๊ทธ ๊ฐ์ ๊ทธ๋๋ก ์ฌ์ฉํด์ฃผ๊ธฐ ๋๋ฌธ์ ๋ถํ์ํ ์ฐ์ฐ์ ๋ฐ๋ณต์ด ์ฌ๋ผ์ง๋ค.
Memoization
DP๋ฅผ ์ฌ์ฉํ๋ฉด์, Top-Down approach๋ฅผ ๊ณ์ ์ ์งํ๋ ๋ฐฉ๋ฒ๋ ์๋ค. ์ผ๋ฐ์ ์ธ recursion์ ๋ฌธ์ ์ ์ ๊ฐ์ ๊ณ์ฐ์ ๋ถํ์ํ๊ฒ ๋ฐ๋ณตํ๋ ๊ฒ์ด ๋ฌธ์ ์๊ธฐ ๋๋ฌธ์ ์ ์ผ ์์ ๋ฌธ์ ๋ถํฐ ๊ณ์ฐํ์๋๋ฐ, Memoization ์ ๋ต์ ์ฌ์ฉํ๋ฉด ์ชผ๊ฐ๋ค์ด๊ฐ๋ฉด์ ๊ณ์ฐํ๋ฉด์ ๋ถํ์ํ ๊ณ์ฐ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค. Memoization์ ๋จ์ํ๊ฒ ํ ์ด๋ธ์ ํ๋ ๋ง๋ค์ด์ ํ๋์ ๊ณ์ฐ์ด ๋๋ ๋๋ง๋ค ํด๋น ๊ฐ์ ๋ฉ๋ชจํด๋๊ณ ๋์ค์ ๋๊ฐ์ ์ฐ์ฐ์ด ๋์ค๋ฉด ํ ์ด๋ธ์์ ๊ฐ๋ง ๊บผ๋ด ์ฌ์ฉํ๋ ๋ฐฉ์์ด๋ค.
Matrix Chain Multiplication
DP๋ฅผ ํตํด ํด๊ฒฐํ ์ ์๋ ์ ๋ช ํ ๋ฌธ์ ๋ฅผ ํ๋ฒ ํ์ด๋ณด์. Matrix Chain Multiplication์ ํ๋ ฌ๊ณฑ์ ์์ ๋ฌธ์ ์ด๋ค. ์ด๋ค ๋ค์์ ํ๋ ฌ์ด ์์ ๋, ๊ดํธ๋ฅผ ์ด๋์ ์์น์ํค๋์ง์ ๋ฐ๋ผ ์ต์ข ๊ฒฐ๊ณผ๋ ๊ฐ์ง๋ง ๊ณฑ์ ์ ๊ณ์ฐ๋์ด ๋ฌ๋ผ์ง๋ค. ์๋ํ๋ฉด, ํ๋ ฌ์ ๊ณฑํ๊ธฐ ์ํด์๋ ํ๋ ฌ์ ํฌ๊ธฐ๊ฐ ์ค์ํ๋ฐ, ์๋ฅผ ๋ค์ด p x q ํ๋ ฌ์ q x r ํ๋ ฌ๊ณผ ๊ณฑํ๋ค๋ฉด ์ด ์ฐ์ฐ ํ์๋ p x q x r์ด ๋๊ธฐ ๋๋ฌธ์ด๋ค.
๋ ์์ธํ ์๋ฅผ ์ดํด๋ณด์. ์ฐ๋ฆฌ์๊ฒ ์ธ๊ฐ์ง ํ๋ ฌ์ด ์๋ค๊ณ ํ์. ๊ทธ๋ฆฌ๊ณ ๊ฐ ํ๋ ฌ์ด ๋ค์๊ณผ ๊ฐ์ ํฌ๊ธฐ๋ก ์ ํด์ ธ ์๋ค๊ณ ๊ฐ์ ํ์.
- A = p X q
- B = q X r
- C = r X s
๊ดํธ๋ฅผ ํตํด ์ธ ํ๋ ฌ์ ๊ณฑ์ด ๊ฐ์ง ์ ์๋ ๊ฒฝ์ฐ์ ์๋ ์ด ๋๊ฐ์ง ์ด๋ค.
- (A X B) X C
- A X (B X C)
1๋ฒ ์ํฉ์ ๋ฐ๋ผ ๊ณ์ฐํ ์ฐ์ฐ ํ์๋ p X q X r + p X r X s = p X r X (q + s) ๊ฐ ๋ ๊ฒ์ด๋ค.
2๋ฒ ์ํฉ์ ๋ฐ๋ผ ๊ณ์ฐํ ์ฐ์ฐ ํ์๋ q X r X s + p X q X s = (p + r) X q X s ๊ฐ ๋๋ค.
์ง๊ธ์ ๋ ๊ฐ์ง ๊ฒฝ์ฐ์ ์ ๋ฐ์ ์์ผ๋ ํฐ ์ฐจ์ด๊ฐ ์์ด ๋ณด์ด๊ฒ ์ง๋ง, ํ๋ ฌ์ ๊ฐฏ์๊ฐ ๋์ด๋จ์ ๋ฐ๋ผ, ๊ทธ๋ฆฌ๊ณ ํ๋ ฌ์ ํฌ๊ธฐ์ ๋ฐ๋ผ ์ฐ์ฐ ํ์์๋ ํฐ ์ฐจ์ด๊ฐ ์๋ค. ๊ทธ๋ผ ์ด๋ป๊ฒ ํด์ผ ์ต์ํ์ ์ฐ์ฐ ํ์๋ก ํ๋ ฌ์ ๊ณฑ์ ์ํํ ์ ์์๊น?
Brute Force
๋จ์ํ๊ฒ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ณ์ฐํ๋ ค๊ณ ํด๋ณด์. ํ๋ ฌ์ ๊ฐฏ์ N์ด 2 ์ด์์ด๋ฉด, ๋ธ๋ฃจํธ ํฌ์ค๋ฅผ ์ด์ฉํ ํด๊ฒฐ์ด ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ๊ฒฐ๊ตญ ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ๋ค ํ์ธํด๋ด์ผ ํ๋๋ฐ, Ω(2n) ๋งํผ์ ์๊ฐ์ ์์ํ๊ฒ ๋๋ค.
DP
๊ทธ๋ผ ๊ฐ์ ๋ฌธ์ ๋ฅผ ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ์ผ๋ก ํ์ด๋ณด์. ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋จ์ ํญ์ ๋ช๊ฐ์ ๋จ๊ณ๋ก ๋๋์ด์ ์ ๊ทผํ๋ฉด ํด๊ฒฐํ ์ ์๋ค.
Step 1: Find Optimal Substructure
Optimal substructure๋ ์ฃผ์ด์ง ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ ๋ ์์ ๋ฌธ์ ์ ์ฒ์ ์ ์๋ฃจ์ ์ ์๋ฏธํ๋ค. ์ฐ์๊ฒ ์ฃผ์ด์ง ํ๋ ฌ์ ๊ฐฏ์๊ฐ j ๊ฐ๋งํผ ์๋ค๋ฉด ์ฐ๋ฆฌ๊ฐ ์ฐพ์ ์ ์๋ substructure๋ AiAi+1Ak ์ Ak+1Ak+2Aj ๋ก ๋๋ ์ ์์ ๊ฒ์ด๋ค.
k๋ ๊ดํธ๋ฅผ ์์น์ํค๋ ํ๋ ฌ์ ์๋ฏธํ๊ณ ํด๋น ํ๋ ฌ์ ๋ค์ ํ๋ ฌ๋ถํฐ ๋ง์ง๋ง ํ๋ ฌ๊น์ง ๋ฌถ์ผ๋ฉด ์ฐ๋ฆฌ๊ฐ ์ด๊ธฐ์ ๊ฐ์ก๋ ํ๋ ฌ์ ์งํฉ์ ๋ ๊ทธ๋ฃน์ผ๋ก ๋๋ ์ ์๊ฒ ๋๋ค.
Step 2: A Recursive Solution
i๋ฒ์งธ ํ๋ ฌ๋ถํฐ j๊น์ง์ ํ๋ ฌ์ ๊ณฑํ ๋ ํ์ํ ์ต์ํ์ ๊ณฑ์ ์ฐ์ฐ ํ์๋ฅผ m[i, j] ๋ก ํํํด๋ณด์. ๊ทธ๋ ๋ค๋ฉด ์ฐ๋ฆฌ๊ฐ ๊ตฌํ ์ต์ข ์ ์ธ ๋ต์ ์ฃผ์ด์ง j๊ฐ์ ํ๋ ฌ์ ๋ํ ์ต์ํ์ ์ฐ์ฐ ํ์์ด๊ธฐ ๋๋ฌธ์ m[i, j] ์ผ๋ก ํํํ ์ ์์ ๊ฒ์ด๋ค.
์์ Step 1 ์์ ๋ง๋ค์๋ ์ต์ ์ ์๋ฃจ์ ์ ๋ํ ์์ ๊ทธ๋๋ก ์ฌ์ฉํด๋ณด์.
์์ ํ๋ ฌ ์์น์ธ i ๊ฐ ์ฃผ์ด์ง ๊ฐฏ์ j ์ ๊ฐ์ ๊ฐ์ด๋ผ๋ฉด ํ๋ ฌ์ด ํ๋๋ฟ ์ด๋ผ๋ ๋ป์ด๊ธฐ ๋๋ฌธ์, ๊ณฑ์ ์ ํ์๋ 0 ์ด ๋๋ค. ์ด๊ฒ์ ์์ผ๋ก ์ผ๋ฐํ ํ๋ฉด,
if i = j, m[i, j] = 0
์ด๋ผ๊ณ ํํํ ์ ์๋ค.
๊ทธ๋ ๋ค๋ฉด j ๊ฐ i ๋ณด๋ค ํฐ ๊ฒฝ์ฐ์๋ ์ด๋จ๊น? Step 1 ์์ ์ธ์ ๋ ์๋๋ก ์ฐ๋ฆฌ๋ ํ๋ ฌ๋ค์ ๋ ๊ทธ๋ฃน์ผ๋ก ๋๋์ด์ ๊ณ์ฐ์ ํด๋ณด์์ผ ํ๋ค. ์ด ์์ ํํํ๋ฉด,
if i < j, m[i, j] = m[i, k] + m[k + 1, j] + pi-1pkpj
์์ ๊ฐ์ด ๊ฐ ๊ทธ๋ฃน์ ์ต์ ์ฐ์ฐํ์๋ฅผ ๊ตฌํด์ ๋ํ๊ณ , ๋ ๊ทธ๋ฃน์ ๊ฒฐ๊ณผ๋ก ๋์จ ํ๋ ฌ์ ๊ณฑํ ๋ ๋ฐ์ํ๋ ์ด ์ฐ์ฐ ํ์๋ฅผ ๋ํด์ฃผ๋ฉด, ์ ์ฒด ํ๋ ฌ์ ๋ํ ์ต์ ์ฐ์ฐ ํ์๋ฅผ ๊ตฌํ ์ ์์ ๊ฒ์ด๋ค.
Step 3: Computing the optimal costs
๊ดํธ๋ฅผ ๋ฃ์ ์ ์๋ ์์น k ๋ i ≤ k < j ์์ ๊ธฐ์ตํ๋ฉด์ ์ต์ ์ cost ๋ฅผ ์ฐพ์๋ณด์.
1 | 2 | 3 | 4 | 5 | 6 |
---|---|---|---|---|---|
2 | 0 | 0 | 0 | 0 | 0 |
3 | x | A | B | C | K |
4 | x | x | 0 | 0 | C |
5 | x | x | x | 0 | B |
6 | x | x | x | x | A |
j ๊ฐ 6์ด๋ผ๊ณ ํ ๋, ์ฆ ์ฃผ์ด์ง ํ๋ ฌ์ ๊ธธ์ด๊ฐ 6์ด๋ผ๊ณ ํ ๋ ์ฐ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ m ํ ์ด๋ธ์ ๋ง๋ค ์ ์๋ค. ๊ฐ ์นธ์ m[i, j], j ๋ฅผ ๊ณ์ฐํ ๋ ํ์ํ ์ต์ํ์ ํ์๋ฅผ ๊ธฐ์ตํ๊ณ ์์ ๊ฒ์ด๋ค.
i๋ฅผ 3์ด๋ผ๊ณ ํ๊ณ ์ ์ฒด ๊ธธ์ด 6๊น์ง ๋๋ ์ ์๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ณ ๋ คํด๋ณธ๋ค๊ณ ํ์. k ๋ i ≤ k < j ์กฐ๊ฑด์ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์, ์ฐ๋ฆฌ๊ฐ ๊ณ ๋ คํด์ผํ ๊ฒฝ์ฐ์ ์๋ k ๊ฐ 3์ผ ๋, 4์ผ ๋, ๊ทธ๋ฆฌ๊ณ 5์ผ ๋๊ฐ ๋ ๊ฒ์ด๋ค.
์์ ์ธ์ ๋ recursion equation์ ์ ์ฉํด๋ณด๋ฉด,
k = 3 ์ผ ๋, m[3, 6] = m[3, 3] + m[4, 6] + p2p3p6
k = 4 ์ผ ๋, m[3, 6] = m[3, 4] + m[5, 6] + p2p3p6
k = 5 ์ผ ๋, m[3, 6] = m[3, 5] + m[6, 6] + p2p3p6
์ธ ๊ฒฝ์ฐ๋ก ํํํ ์ ์๋ค. ๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ ์ธ ๊ฐ์ค์ ์ต์ข ์ฐ์ฐ ํ์๊ฐ ๊ฐ์ฅ ์์ ๊ฒฝ์ฐ๋ฅผ ์ ํํ๋ฉด optimal solution์ ๊ตฌํ ์ ์๊ฒ ๋๋ค. ์ฃผ๋ชฉํ ์ ์, ์ฐ๋ฆฌ๋ m[3, 3] ๊ณผ m[6, 6]์ด 0์ด๋ผ๋ ๊ฒ์ ์ด๋ฏธ ์๊ณ ์๊ณ ํ ์ด๋ธ์๋ ๊ธฐ๋ก์ ํด๋์๋ค๋ ๊ฒ์ด๋ค.
0์ผ๋ก ์ด๊ธฐํ๋ ๋๊ฐ์ ์ ๊ธฐ์ค์ผ๋ก ๊ทธ ๋ฐ๋ก ์์ ์๋ ๋๊ฐ์ ์ ๋ชจ๋ ํ๋ ฌ์ ๋ ๊ฐ๋ง ํฌํจํ๊ณ ์๋ ๊ฒฝ์ฐ์ผ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ํญ์ ๋ ํ๋ ฌ์ ๊ณฑ์ ํ์์ธ pi-1pkpj ์ ์ํด ๊ฒฐ์ ๋๋ค. ์ด๋ฐ์์ผ๋ก ๋๊ฐ์ ์ ์ค์ธจ์ผ๋ก ํ๋์ฉ ์ด๋์์ผ๋๊ฐ๋ฉด ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ๋ค ๋ค์ ๊ณ์ฐํด๋ณผ ํ์์์ด m[1, j]์ ๊ฐ์ฅ ์ต์ ๊ฐ์ด ๋ค์ด๊ฐ๊ฒ ๋ ๊ฒ์ด๋ค.
์ด๋ฐ ๋ฐฉ์์ผ๋ก ๋ฌธ์ ๋ฅผ ํ๋ฉด, ์ด n ๊ฐ์ ๋ํด์ 2๊ฐ์ ์กฐํฉ์ ๋ฝ์ optimal substructure ๋ฅผ ๊ตฌ์ฑํ๊ฒ ๋๊ธฐ ๋๋ฌธ์ nC2 + n ์ผ๋ก ๊ฒฝ์ฐ์ ์๋ฅผ ํํํ ์ ์๊ณ , ์๊ฐ๋ณต์ก๋๋ฅผ ๊ณ์ฐํ๋ฉด, Θ(n2) ๋ก ํํํ ์ ์๋ค.
Step 4: Constructing an Optimal Solution
์ ๊ณ์ฐ์ ํตํด์๋ ์ต์ํ์ ์ฐ์ฐ ํ์๋ง ์์๋ผ ์ ์๊ณ , k์ ์์น๋ฅผ ๋ฐ๋ก ๊ธฐ์ตํ์ง๋ ์๋๋ค. ๊ทธ๋์ ์ฐ๋ฆฌ๋ s[i, j]๋ผ๋ ๋๊ฐ์ ํํ์ ๋ฐฐ์ด์ ๋ง๋ค์ด์ m ๋ฐฐ์ด์ ์ ํ๋๋ ์ต์ ์ k๊ฐ์ ๊ธฐ๋กํด์ค ๊ฒ์ด๋ค.
๊ทธ๋ผ ์ ์ฒด ์๊ณ ๋ฆฌ์ฆ์ ๋ํ pseudo code๋ฅผ ๋ณด์
Matrix-Chain-Order (p)
n = legth[p] - 1
for i = 1 to n
m[i, i] = 0
for r = 2 ro n
for i = 1 to n - r + 1
j = i + r - 1
m[i, j] = infinite
for k = i to j - 1
q = m[i, k] + m[k + 1, j] + p[i-1]p[k]p[j]
if q < m[i, j]
m[i, j] = q
s[i, j] = k
์์์ ์ ๋ฆฌํ ๋ด์ฉ์ด ์ง๊ด์ ์ผ๋ก ๋ณด์ด๋ ์ฝ๋์ด๋ค. MCM ๋ฌธ์ ๊ฐ [๋ฐฑ์ค ์๊ณ ๋ฆฌ์ฆ] ์๊ณ ๋ฆฌ์ฆ์ ๋น์ทํ ๋ฌธ์ ๋ก ์ถ์ ๋์ด ์๊ธฐ ๋๋ฌธ์ [๋ฐฑ์ค ์๊ณ ๋ฆฌ์ฆ] ๋ฌธ์ ๋ฅผ ๋ค์๊ณผ ๊ฐ์ ์ฝ๋๋ก ํด๊ฒฐํด๋ณด์๋ค.
๋ฌธ์ : https://www.acmicpc.net/problem/11049
#include <iostream>
#include <algorithm>
#include <climits>
using namespace std;
int main()
{
int N;
cin >> N;
int P[502][502];
int minCost[502][502];
for (int i = 1; i <= N; i++)
{
cin >> P[i][0];
cin >> P[i][1];
}
for (int l = 2; l <= N; l++)
{
for (int i = 1; i <= N - l + 1; i++)
{
int j = i + l - 1;
minCost[i][j] = INT_MAX;
for (int k = i; k <= j - 1; k++)
{
int q = minCost[i][k] + minCost[k + 1][j] + P[i][0] * P[k][1] * P[j][1];
minCost[i][j] = min(q, minCost[i][j]);
}
}
}
cout << minCost[1][N];
}
ํด๋น ๋ฌธ์ ์์๋ k ๊ฐ์ ๋ฐ๋ก ๊ธฐ๋กํ์ง ์์๋ ์ต์ ์ฐ์ฐ ํ์๋ง ๊ตฌํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ํด๋น ๋ถ๋ถ์ ๊ตฌํํ์ง ์๊ณ ํด๊ฒฐํ๋ค. ๊ฐ์ ๋ฌธ์ ๋ฅผ k๊ฐ ๊น์ง ๊ธฐ๋กํด์ ๋๊ฐ์ ๋ฐฐ์ด์ ๋ชจ๋ ์ถ๋ ฅํ๋๋ก ๋ง๋ค์ด ๋ณด์.
#include <iostream>
#include <algorithm>
#include <climits>
using namespace std;
int main()
{
int N;
cin >> N;
int P[502][502];
int minCost[502][502];
int record[502][502];
for (int i = 1; i <= N; i++)
{
cin >> P[i][0];
cin >> P[i][1];
}
for (int l = 2; l <= N; l++)
{
for (int i = 1; i <= N - l + 1; i++)
{
int j = i + l - 1;
minCost[i][j] = INT_MAX;
for (int k = i; k <= j - 1; k++)
{
int q = minCost[i][k] + minCost[k + 1][j] + P[i][0] * P[k][1] * P[j][1];
if (q < minCost[i][j]){
minCost[i][j] = q;
record[i][j] = k;
}
}
}
}
cout << endl;
cout << "Minimum multiplication: "<< minCost[1][N] << endl;
cout << endl;
cout << "Number of optimal multiplication" << endl;
for (int i = 1 ; i <= N ; i++){
for(int j = 1 ; j<=N ; j++){
cout << minCost[i][j] << "\t";
}
cout << endl;
}
cout << endl;
cout << "Paranthesis Position" << endl;
for (int i = 1 ; i <= N ; i++){
for(int j = 1 ; j<=N ; j++){
cout << record[i][j] << "\t";
}
cout << endl;
}
}
๋ฐฐ์ด์ ํด์ํ ๋๋ ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ฅผ ๊ดํธ๋ก ๋๋ ์์น๋ผ๊ณ ์๊ฐํ๊ณ ํด์ํ๋ฉด ๋๋ค. ๋ง์ฝ ๊ฒฐ๊ณผ์ record ๋ฐฐ์ด์ 1ํ 6์ด์ ๊ฐ์ด 3์ด ๋์๋ค๋ฉด, 1๋ฒ์งธ ํ๋ ฌ๋ถํฐ 6๋ฒ์งธ ํ๋ ฌ๊น์ง ํ๋ ฌ์์๋ 3๋ฒ ํ๋ ฌ ๋ค๋ฅผ ๊ธฐ์ค์ผ๋ก 1, 2, 3 ๋ฒ์งธ ํ๋ ฌ์ ๊ดํธ๋ฅผ ์น๊ณ , 4, 5, 6 ๋ฒ์งธ ํ๋ ฌ์ ๊ดํธ๋ฅผ ์น๋ฉด ๋๋ค.
'๐ฎ ์จ-์์ค > ๐ ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๊ณ ๋ฆฌ์ฆ ์ ๋ฆฌ] ๋ฐฐ๋ญ ๋ฌธ์ (Knapsack Problem) (7) | 2021.07.17 |
---|---|
[์๊ณ ๋ฆฌ์ฆ ์ ๋ฆฌ] ํํ๋ง ์ฝ๋(Huffman Code Problem) (0) | 2021.07.17 |
[์๊ณ ๋ฆฌ์ฆ ์ ๋ฆฌ] ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ(Greedy Alogorithm) (0) | 2021.07.17 |
[์๊ณ ๋ฆฌ์ฆ ์ ๋ฆฌ] ์ต์ฅ ๊ณตํต ๋ถ๋ถ ์์ด(LCS) (0) | 2021.07.17 |
[์๊ณ ๋ฆฌ์ฆ ์ ๋ฆฌ] ์ต์ฅ ์ฆ๊ฐ ๋ถ๋ถ ์์ด(LIS) (0) | 2021.07.17 |
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote