https://programmers.co.kr/learn/courses/30/lessons/12913
ํ์ด
DP๋ฌธ์ ๋ค. ์ด๋ป๊ฒ ํ์ง ๊ณ ๋ฏผํ๋ค๊ฐ ๊ฐ ์ด๋ง๋ค ๊ฐ์ฅ ํฐ ๊ฐ์ ์ฐพ๊ณ , ๋์ผํ ์ด์ด ์๋์ ๋ํด์ฃผ๋ ์์ผ๋ก ์๊ฐ์ ํ๋ค... ๊ฒฐ๊ตญ ๋๋ฌด ๋ณต์กํด์ง๊ณ ํ์ง๋ชปํด ์ฐพ์๋ณด๋ DP๋ฅผ ์ด์ฉํ๋ฉด ์ฝ๊ฒ ํด๊ฒฐ ํ ์ ์๋ค.
ํ์ฌ ํ์์ ๋ฐ์ ์ด์ ์ ์ ์ด๊ณผ ๋์ผํ๊ฒ ๋ฐ์ ์ ์๋ค.
1 2 3 5
5 6 7 8
์์ ๊ฐ์ด์์๋, ์ฒซ๋ฒ์งธ ํ์์ 5๋ฅผ ๋ฐ์ผ๋ฉด ๋๋ฒ์งธ ํ์์ 8์ ๋ฐ์ ์ ์๋ค.
๊ฐ ํ์ ์ด๋ง๋ค ์ด์ ๊น์ง์ ์ต๋๊ฐ์ ๊ตฌํด๊ฐ๋ ์์ผ๋ก ํผ๋ค.
i๋ฒ์งธ ํ์ ๊ฐ๋ค์ i-1๋ฒ์งธ๊น์ง ํ๋ค์ ๊ฐ๋ค์ ์ต๋๊ฐ์ ๊ตฌํด๊ฐ๋ ์์ด๋ค.
๋๋ฒ์งธ ํ(5, 6, 7, 8)๋ถํฐ ์ด์ ํ์ ์ต๋๊ฐ๋ค์ ํฉ์ ๋ํ๋ค.
land[2][0] ์ ์ฌ์ ์๋ ์ต๋๊ฐ์
land[2][0] + land[1][1] = 7
land[2][0] + land[1][2] = 8
land[2][0] + land[1][3] = 10
์์ ์ธ ๊ฐ์ค ๊ฐ์ฅ ํฐ ๊ฐ์ธ 10์ด๋ค.
land[2][1] ์ ์ฌ์ ์๋ ์ต๋๊ฐ์
land[2][1] + land[1][0] = 7
land[2][1] + land[1][2] = 9
land[2][1] + land[1][3] = 11
์์ ์ธ ๊ฐ์ค ๊ฐ์ฅ ํฐ๊ฐ์ธ 11์ด๋ค.
land[2][2] ์ ์ฌ์ ์๋ ์ต๋๊ฐ์
land[2][2] + land[1][0] = 8
land[2][2] + land[1][1] = 9
land[2][2] + land[1][3] = 12
์์ ์ธ ๊ฐ์ค ๊ฐ์ฅ ํฐ๊ฐ์ธ 12์ด๋ค.
land[2][3] ์ ์ฌ์ ์๋ ์ต๋๊ฐ์
land[2][3] + land[1][0] = 9
land[2][3] + land[1][1] = 10
land[2][3] + land[1][2] = 11
์์ ์ธ ๊ฐ์ค ๊ฐ์ฅ ํฐ๊ฐ์ธ 11์ด๋ค.
๋ฐ๋ผ์ ์์ ๊ฐ์ด ๋๋ค.
์๋๋ก๋ ๊ณ์ ๋๊ฐ์ ์์ ์ ํํ๋ฉด ๋๋ค.
๋ชจ๋ ์์ ์ด ๋๋๋ฉด, 0, 1, 2, 3 ๋ฒ์งธ ์ด ์ค ๊ฐ์ฅ ํฐ๊ฐ์ ๊ณ ๋ฅด๋ฉด ๋๋ค.
PS. ๊ฐ ํ๋ณ๋ก ์ ๋ ฌ์ ํ๊ณ , ๊ฐ์ฅ ๋ง์ง๋ง ํ์ 3๋ฒ์งธ ๊ฐ์ ์ถ๋ ฅํด๋ ์ ๋ต์ด๋ค.
import java.util.*;
class Solution {
public static int solution(int[][] land) {
for(int i=1; i<land.length; i++) {
land[i][0] += Math.max(land[i-1][1], Math.max(land[i-1][2], land[i-1][3]));
land[i][1] += Math.max(land[i-1][0], Math.max(land[i-1][2], land[i-1][3]));
land[i][2] += Math.max(land[i-1][1], Math.max(land[i-1][0], land[i-1][3]));
land[i][3] += Math.max(land[i-1][0], Math.max(land[i-1][1], land[i-1][2]));
}
for(int i=0; i<land.length; i++){
Arrays.sort(land[i]);
}
return land[land.length-1][3];
//return Math.max(land[land.length-1][0], Math.max(land[land.length-1][1], Math.max(land[land.length-1][2], land[land.length-1][3])));
}
}
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 2606๋ฒ: ๋ฐ์ด๋ฌ์ค(DFS, BFS) (0) | 2020.01.22 |
---|---|
[๋ฐฑ์ค] 1260๋ฒ: DFS์ BFS (0) | 2020.01.22 |
[๋ฐฑ์ค] 10815๋ฒ: ์ซ์ ์นด๋ (0) | 2020.01.22 |
ํ๋ก๊ทธ๋๋จธ์ค[Java] - ํฐ ์ ๋ง๋ค๊ธฐ (0) | 2020.01.22 |
ํ๋ก๊ทธ๋๋จธ์ค[Java] - ์ซ์์ ํํ (0) | 2020.01.21 |
๋๊ธ