Geisha 2024. 7. 5. 17:03

 

동적계획법 DP 로 풀 수 있었다.
4개의 행이 정해져 있기 때문에 각 행을 내려갈 때마다 이전의 자신의 행을 제외한 값을 더하고 최댓값을 저장해나가면서 최종적으로 1행 2행 3행 4행을 비교해서 가장큰값이 정답이 되게끔 풀이하였다.

import java.util.*;

class Solution {
    int maxScore(int a, int b, int c){
        return Math.max(Math.max(a,b),c);
    }
    int solution(int[][] land) {
        int answer = 0,last;
        for(int i = 1 ; i < land.length ; i++){
            land[i][0]+=maxScore(land[i-1][1],land[i-1][2],land[i-1][3]);
            land[i][1]+=maxScore(land[i-1][0],land[i-1][2],land[i-1][3]);
            land[i][2]+=maxScore(land[i-1][1],land[i-1][0],land[i-1][3]);
            land[i][3]+=maxScore(land[i-1][1],land[i-1][2],land[i-1][0]);
        }
        return Math
            .max(land[land.length-1][3],
                 maxScore(land[land.length-1][0],land[land.length-1][1],land[land.length-1][2]));
    }
}

 

Math

-max(a,b)