๐ ๋ฌธ์
๐ฑ ์์ด๋์ด
๋ฉ๋ชจ๋ฆฌ ์ ํ 4MB์ด๋ค, ์ฆ ๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ๋๋ค๋ฉด ๋ถํ์ํ ๋ฉ๋ชจ๋ฆฌ๋ ์ค์ฌ์ผ ํ๋ค.
์ฒ์ ํ์์ ๋ N = 100,000๊น์ง ๋ชจ๋ ์ ๋ ฅ์ ๋ฐฐ์ด์ ๋ฐ๊ณ ์ ์ฅํ๋ค... ๊ทธ๋ฌ๋ค ๋ณด๋ ๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ๊ฐ ๋์ ํ๋ ธ๋ค
์ด ๋ฌธ์ ๋ ์ฌ์ค ์ ๋ ฅ์ ์ ์ฅํ ํ์ ์๋ค ์ ๋ ฅ๋๋ฉด -> dp๋ก ์ฒ๋ฆฌํ๋ค ์ด๋ฅผ N๋ฒ ๋ฐ๋ณตํ๋ฉด ๋๋ค
์ด ๋ฌธ์ ๋ ๋ค์ด๋ด๋ฏน ํ๋ก๊ทธ๋๋ฐ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ค ์ฆ ์ฐ๋ฆฌ๋ 3๊ฐ์ง ๊ฒฝ์ฐ์ ๋ํ ์ ํ์์ ์ธ์ฐ๋ฉด ๋๋ค!
์ต๋๊ฐ ๊ตฌํ๋ ๊ฒฝ์ฐ
j =1 , ์ ํ์ = dp1[1] = max(dp1[1], dp1[2])+ n1
j =3 , ์ ํ์ = dp1[3] = max(dp1[3], dp1[2])+ n3
j =2 , ์ ํ์ = dp1[2] = max(dp[1] , max(dp[2], dp[3])+ n2
๋ด๋ ค๊ฐ ์ ์๋(์ ํ ๊ฐ๋ฅํ) ์ซ์ ์ค ๊ฐ์ฅ ํฐ ๊ฐ์ ๊ณ ๋ฅด๊ณ ์ ๋ ฅ๋ ๊ฐ์ ๋ํด์ค๋ค. ๊ทธ ํ ๋ฉ๋ชจ์ด์ ์ด์ ๊ธฐ๋ฒ์ผ๋ก
๊ณ์ ๊ณ์ฐ๊ฐ์ ์ ์ฅํ๋ฉด์ ํผ๋ค! ๋ฌผ๋ก ์ต์๊ฐ์ Math.min์ ์ฌ์ฉํ๋ฉด ๋๋ค.
๐ฑ ์ฝ๋ ๋ฐ ํ์ด
์์์ ์ค๋ช ํ ๊ฒ์ฒ๋ผ ๊ตฌํํ ๋๋ ์ด๋ ค์ธ ๊ฒ์ ์๋ค. ํ์ง๋ง ์ฃผ์ํด์ผ ํ๋ ๋ถ๋ถ์ด ์๋ค.
dp1[0] = Math.max(dp1[0], dp1[1]) + n1;
dp1[2] = Math.max(dp1[1], dp1[2]) + n3;
dp1[1] = Math.max(dp1[1], Math.max(tmp1, tmp2)) + n2;
๋ชจ๋ ๊ณ์ฐ์ ์ด๊ธฐ๊ฐ์ ๊ธฐ์ค์ผ๋ก ๊ณ์ฐํด์ผ ํ๋๋ฐ ์ด ๊ฒฝ์ฐ๋ dp1[0], dp1[2] ๊ณ์ฐ๋๋ฉด dp1[1]์ ์ด๊ธฐ๊ฐ์ ์ฌ์ฉํ์ง ๋ชปํ๋ค.
์ด๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ์ด๊ธฐ๊ฐ์ ๋ณ์์ ๋ด์์ผ ํ๋ค.
int tmp1 = dp1[0];
int tmp2 = dp1[2];
๋จผ์ ๋ณ๊ฒฝ๋ dp1๋ฐฐ์ด์ ๋ค์ด์๋ ์ด๊ธฐ๊ฐ์ ๋ณ์์ ๋ด๊ณ dp1[1] ๊ณ์ฐํ ๋ ์ฌ์ฉํ๋ค๋ฉด ์ ๋ฌธ์ ๋ ํด๊ฒฐ๋๋ค.
๐ฑ ๋๋ ์
์ค๋๋ง์ ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ์ ์ด์ฉํด ๋ดค๋๋ฐ ์ฌ๋ฏธ์์๋ค, ํญ์ ํ๋ ๋ง์ด์ง๋ง ์ ํ์์ ์๊ฐํด ๋ด๊ณ ๊ตฌํํ๋ ๊ณผ์ ์ด
๊ฐ์ฅ ์ด๋ ค์ด ๊ฒ ๊ฐ๋ค. ํ์ง๋ง ์ด ๋ฌธ์ ๋ ํจํด์ ๋จผ์ ์๋ ค์ค์ ์ฝ๊ฒ ํผ ๊ฒ ๊ฐ๋ค
๊ฐ์ฅ ์ด๋ ต๋ค ์๊ฐํ ๊ฒ์ ํ๊ฒ ๋์ ๋๊ฐ ๊ฐ์ฅ ์ฌ๋ฏธ์๋ ๊ฒ ๊ฐ๋ค ใ ใ
'Algorithm > - Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ] ๋ฐฑ์ค 17836 ๊ณต์ฃผ๋์ ๊ตฌํด๋ผ! (JAVA) (2) | 2024.02.13 |
---|---|
[BOJ] ๋ฐฑ์ค 2290 LCD Test (JAVA) (0) | 2024.02.05 |
[BOJ] ๋ฐฑ์ค 15663 N๊ณผ M(9) (JAVA) (1) | 2024.01.29 |
[BOJ] ๋ฐฑ์ค 2493 ํ (JAVA) (1) | 2024.01.22 |
[BOJ] ๋ฐฑ์ค 1913 ๋ฌํฝ์ด (JAVA) (1) | 2024.01.15 |
๋๋ง์ ๊ฐ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค!
ํฌ์คํ ์ด ์ข์๋ค๋ฉด "์ข์์โค๏ธ" ๋๋ "๊ตฌ๋ ๐๐ป" ํด์ฃผ์ธ์!