ํ๋ ํฐ๋1 : ๋์ ๊ณํ๋ฒ, Convex Hull ๋ฌธ์ ์ด๋ค.
์๊ฐ
์ผ๋จ ์์ ํ์์ ์๊ฐํด ๋ณธ๋ค. ์.. ๋ง๋ ์๋๋ค. ๋ช๊ฐ๋ฅผ ๊ฒน์ณ์ ๋ง๋๋์ง ์์ ํ์์ ํ๋ค๋ฉด ์๊ฐ ๋ณต์ก๋๊ฐ ์ด๋ค. ์ด ๋ฌธ์ ๋ ๊ทธ๋ฅ ์ง๊ด์ ์ผ๋ก ๋์ ๊ณํ๋ฒ ๋์๊ฐ ๋๋ค. ์ด๋ ํ ์กฐ๊ฑด์์ ํน์ ์์น๊น์ง์ ๋ ์ ์ต์๊ฐ์ด ๋ค์์ ๊ตฌํ๋๋ฐ ์ํฅ์ ์ค ๊ฒ ๊ฐ๊ธฐ ๋๋ฌธ์ด๋ค.
์ ์
dp[n]
= n๋ฒ์งธ ๋ ๊น์ง ๊ตฌ๋งคํ์ ๋ ๋น์ฉ์ ์ต์๊ฐ
์ด๋ ๊ฒ ์ ์ํ๋ค๋ฉด, ์ด์ ๋ ์ ํ์์ ์ด๋ป๊ฒ ์ธ์ธ์ง ๊ณ ๋ฏผํด์ผ ํ๋ค. n๋ฒ์งธ ๋ ๊น์ง ๊ตฌ๋งคํ์ ๋ ๋น๊ตํด๋ด์ผ ํ๋ ๊ฐ๋ค์ ๋์ดํด ๋ณด์.
- n๋ฒ์งธ ๋ ์ ๊ทธ๋ฅ ์ฐ๋ค. ๊ทธ๋ฆฌ๊ณ n-1๊น์ง์ ์ต์๊ฐ๊ณผ ๋ํ๋ค.
- n-1๋ฒ์งธ ๋ ๊ณผ ๋ฌถ์ด์ ๊ณ์ฐํด๋ณธ๋ค. ๊ทธ๋ฆฌ๊ณ n-2๊น์ง์ ์ต์๊ฐ๊ณผ ๋ํ๋ค.
- n-2๋ฒ์งธ ๋ ๊ณผ ๋ฌถ์ด์ ๊ณ์ฐํด๋ณธ๋ค. ๊ทธ๋ฆฌ๊ณ n-3๊น์ง์ ์ต์๊ฐ๊ณผ ๋ํ๋ค.
โฆ
ํธ์ค. ๊ฐ๋ฅํ ๊ฒ ๊ฐ์ ๋์๊ฐ ๋๋ค. ์ด๋ ๊ฒ ํ ๊ฒฝ์ฐ ๊น์ง ์ค์ผ ์ ์์ ๊ฒ ๊ฐ๋ค.
dp\[i\] = min\_{j=i}^{j=1}(dp\[j-1\] + \sum\_{k=j}^{k=i}a_k)dp[i] = min(dp[j-1] + j๋ถํฐ i๊น์ง์ ๋
์ ํฉ์ณ ์ฐ ๊ธ์ก)
์ด ๊ฒ์ ์์์ผ๋ก ์ ๋ฆฌํด๋ณด๋ฉด, ์์ ๊ฐ๋ค. ๊ทธ๋ ๋ค๋ฉด j๋ถํฐ i๊ฐ์ง์ ๋ ์ ํฉ์ณ ์ฐ ๊ธ์ก์ ์ด๋ป๊ฒ ๊ตฌํ ๊น?
j๋ถํฐ i๊ฐ์ง์ ๋ ์ ํฉ์ณ ์ฐ ๊ธ์ก
์ค์ ๋ก ๋ ์ ์ฌ๋ณธ๋ค๊ณ ์๊ฐํ๋ค. ๊ฐ์ฅ ๋นจ๋ฆฌ ์ง๊ด์ ์ป๋ ๊ฒ์ ๊ทธ๋ฆผ์ ๊ทธ๋ ค๋ณด๋ ๊ฒ์ด๋ค. ๊ฒฐ๊ตญ ์ด ๋ฌธ์ ๋, ๋ ์ ๊ตฌ์ ํ๋๋ฐ ์์ด์ ์ด๊ฑธ ํต์ง๋ก ํ๋ฒ์ ์ฌ๋ฒ๋ฆฐ๋ค๋ ์๊ธฐ์ ๊ฐ๋ค.
์
๋ ฅ์ด 100 1
, 20 20
์ด ๋ค์ด์๋ค๊ณ ์๊ฐํ์. ์ด ๋ถ๋ถ์ ํด๋นํ๋ ๋
์ ๊ทธ๋ฆฌ๋ฉด ์์ ๊ฐ๋ค. ๊ทธ๋ฐ๋ฐ, ๋ด๊ฐ ์ด ๋ ๋
์ ํฉ์น๋ค๊ณ ์๊ฐํ๋ฉด ๊ฒฐ๊ตญ ์ค์ํ ๊ฒ์ ์ต๋ ๋๋น์ ์ต๋ ๋์ด์ด๋ค. ์๊น ์์์ ๋ณธ ๊ฒ์ฒ๋ผ ๊ฒฐ๊ตญ dp[i]
์ ๊ตฌํ๊ธฐ ์ํด์๋ ๋งจ ์๋ ๋
๋ถํฐ ํฌํจํด์ ์์ชฝ ๋
์ 1๊ฐ, 2๊ฐ 3๊ฐ โฆ ๋ฅผ ์ ํํ์ฌ ํฉ์ณ์ผ ํ๋ค. ๊ทธ๋ ๋ค๋ฉด, ๋
์ ํฉ์น๋ ๋ฐ ์์ด์ 3๊ฐ๋ฅผ ํฉ์น๋ค๋ฉด, 3๊ฐ์ ๋
์ ๋๋น์ ๋์ด๋ฅผ ๋ค ๋น๊ตํด์ ์ป์ด๋ด์ผ ํ๋๋ฐ.. ๊ตณ์ด ๊ทธ๋์ผ ํ ๊น?
์ ๋ ฌํ๊ธฐ
๊ตณ์ด ๊ทธ๋ด ํ์ ์๋ค. dp[i]
์ ๊ตฌํ๋๋ฐ ์์ด์ ๋ฌด์กฐ๊ฑด ํฌํจํด์ผ ํ๋ ๋
์ i๋ฒ์งธ ๋
์ด๋ค. ๊ทธ๋ ๋ค๋ฉด ๋ด๊ฐ ํฉ์น๊ณ ์ถ์ ๋ฒ์์ ๋
์ j๋ฒ์งธ ๋
์ด๋ค. ์ด ๋๋
์ ๊ฐ๊ฐ ground[i], ground[j]
๋ผ ํ๊ฒ ๋ค.
๋ ์ ๊ตฌํ๋๋ฐ ์์ด์ ์์ ๋ฌธ์ ์ฒ๋ผ ์ผ์ผํ ์ต๋๊ฐ์ ๊ตฌํ์ง๋ง๊ณ , ์ด๋ ๊ฒ ํ๋ฉด ์ข๊ฒ ๋ค.
ground[i] = ํฉ์น ๋ ์ ์ต๋ height
ground[j] = ํฉ์น ๋ ์ ์ต๋ width
์ด๋ฌ๋ฉด, ์๊ฐ ๋ณต์ก๋ ์ ๊ฐ๋ฅํ๋ค..!
ํ์์๋ ๋ ์ ๊ฑฐ
๊ทธ๋ฐ๋ฐ ์ ๋ ฌ์ ํ๋ค๋ณด๋ ์ด๋ฐ ๋ ๋ ์๋ค.
์.. ์ด๋ฐ ๋
์ ์ด์ฉ์ง? ์ ์๊ฐํด๋ณด๋ฉด, ์ด ๋
์ ํ์์๋ค. ์ด๋ฏธ ๋
์ ์ด ๋, ํฌํจ๋๋ ๋
์ด๊ธฐ ๋๋ฌธ์ด๋ค. ์๋ฅผ ๋ค์ด 20 20
์ ๊ตฌ๋งคํ๋ค๋ฉด, 15 15
๋ ํฉ์ณ์ด ๊ฒฝ์ฐ ์์ฐ์ค๋ ๊ตฌ๋งคํ๊ฒ ๋๋ ๋
์ด๋ค. ํฉ์ณ์ฌ์ง ์๋ ๋ค๋ฉด ์คํ๋ ค ๋น์ฉ๋ง ๋๊ธฐ ๋๋ฌธ์ ๊ฒฐ๊ตญ ์ด ๋
์ ์ต์๊ฐ์ ๊ตฌํ๋๋ฐ ๋์์ด ๋์ง ์๋ ๋
์ด๋ค. ๋ํ ์ด ๋
์ ๋ฐฐ์ด์ ๊ฐ๊ณ ์๊ฒ ๋๋ค๋ฉด, ์ฐ๋ฆฌ๊ฐ ์์์ ๋ง๋ค๊ณ ์ถ์ ์ ๋ ฌ ๊ท์น์ ์๋ฐฐ๋๋ฏ๋ก์จ ์์์๊ฐ ์์ ๊ตฌํ๋ ๊ฒ์ด ์ด๋ ค์์ง๋ค. ๋ฐ๋ผ์ ์ด๋ฐ ์กฐ๊ฑด์ ํด๋นํ๋ ๋
์ ์ ๊ฑฐํ๋ค.
์ ๋ ฌํ ๋ ์์, ์ง๊ธ ๋ ์ ๋์ด๋ณด๋ค ๋ค์ ๋ ์ ๋์ด๊ฐ ํฌ๋ฉด ์ถ๊ฐํ๋ค.
์ ํ์
dp[i] = min(dp[j-1] + (ground[j].w * ground[i].h))
>(๋จ, i >= j >= 1)
Code
Convex Hull
ํ์ง๋ง.. ํ๋ ํฐ๋์ ์์์ด ์๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์๊ฐ์ด๊ณผ๊ฐ ๋๋ค. ๋น์ฐํ ์ ๋ ฅ์ด 1000000์ด๊ธฐ ๋๋ฌธ์ ์ต์ ์ ๊ฒฝ์ฐ ์ด๋ค. ๊ทธ๋์ ์ฌ๊ธฐ์๋ ์ถ๊ฐ์ ์ธ ์ต์ ํ๊ฐ ํ์ํ๋ค.