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;
    }
}

 

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

'NOTE > 프로그래머스' 카테고리의 다른 글

즐겨찾기가 가장 많은 식당 정보 출력하기 - Oracle  (0) 2022.10.12
도둑질  (0) 2022.09.30
그래프 - 순위  (1) 2022.09.30
사칙연산  (0) 2022.09.29
N으로 표현  (0) 2022.09.29

+ Recent posts