728x90
https://school.programmers.co.kr/learn/courses/30/lessons/12913
728x90
메모리: 88.3 MB, 시간: 29.29 ms
사용 알고리즘: 다이나믹 프로그래밍
class Solution {
int solution(int[][] land) {
int N = land.length;
int[][] dp = new int[N][4];
dp[0] = land[0];
for(int i = 1; i < N; 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]));
}
int answer = Math.max(dp[N - 1][0],
Math.max(dp[N - 1][1],
Math.max(dp[N - 1][2], dp[N - 1][3])));
return answer;
}
}
728x90
'Problem Solving > Programmers' 카테고리의 다른 글
[프로그래머스, 12930] 이상한 문자 만들기 (java) (0) | 2025.01.07 |
---|---|
[프로그래머스, 17680] [1차] 캐시 (java) (0) | 2025.01.07 |
[프로그래머스, 147355] 크기가 작은 부분문자열 (java) (0) | 2025.01.07 |
[프로그래머스, 140108] 문자열 나누기 (java) (0) | 2025.01.03 |
[프로그래머스, 181847] 0 떼기 (java) (0) | 2025.01.03 |