NOTE/프로그래머스

정수 삼각형

m-inz 2022. 9. 30. 16:51
class Solution {
    static int[][] dp;
    static int N;
    public int solution(int[][] triangle) {
        int answer = 0;
        N = triangle.length;
        dp = new int[N+1][N+1];

        for(int i=1; i<=N; i++){
            dp[i][1] = dp[i-1][0] + triangle[i-1][0]; //처음
            int M = triangle[i-1].length;
            for(int j=1; j<=M-1; j++){ //중간
                dp[i][j] = Math.max(dp[i-1][j-1],dp[i-1][j]) + triangle[i-1][j-1];
            }
            dp[i][M] = dp[i-1][M-1] + triangle[i-1][M-1]; //끝
        }
        
        for(int i=1; i<=N; i++){
            answer=  Math.max(answer,dp[N][i]); //바닥에서 큰 값
        }
        
        return answer;
    }
}

 

다시 푸니까 헷갈리네 .. .🥲