[Programmers] 땅따먹기 - 연습문제 (Dynamic Programming)

동민·2021년 3월 11일
0
// 땅따먹기 - 연습문제 (Dynamic Programming)
public class Ttangttameokki {
	int solution(int[][] land) {

		int[][] dp = new int[land.length][4];
		
		for (int i = 0; i < 4; i++) {
			dp[land.length - 1][i] = land[land.length - 1][i];
		}
		
		for (int i = dp.length - 2; i >= 0; i--) {
			dp[i][0] = land[i][0] + Math.max(dp[i + 1][1], Math.max(dp[i + 1][2], dp[i + 1][3]));
			dp[i][1] = land[i][1] + Math.max(dp[i + 1][0], Math.max(dp[i + 1][2], dp[i + 1][3]));
			dp[i][2] = land[i][2] + Math.max(dp[i + 1][0], Math.max(dp[i + 1][1], dp[i + 1][3]));
			dp[i][3] = land[i][3] + Math.max(dp[i + 1][0], Math.max(dp[i + 1][1], dp[i + 1][2]));
		}
		
		return Math.max(dp[0][0], Math.max(dp[0][1], Math.max(dp[0][2], dp[0][3])));
	}
}
profile
BE Developer

0개의 댓글