Algorithm/Programmers

[Lv.3] 정수 삼각형 : Java / DP

say! 2025. 7. 4. 23:13
728x90
class Solution {
    public int solution(int[][] triangle) {
        int answer = 0; // 거쳐간 숫자의 합의 최댓값
        
        int n=triangle.length;
        int[][] dp = new int[n][n];
        
        dp[0][0] = triangle[0][0];
        for(int i=1; i<n; i++){
            for(int j=0; j<=i; j++){
                if(j==0){
                    dp[i][j] = dp[i-1][j] + triangle[i][j];
                }
                else if(j == i){
                    dp[i][j] = dp[i-1][j-1] + triangle[i][j];
                }
                else{
                    dp[i][j] = Math.max(dp[i-1][j-1], dp[i-1][j]) + triangle[i][j];
                }
                
            }
        }
        
        // 마지막 줄 중 최댓값이 정답
        for(int v: dp[n-1]){
            answer = Math.max(answer, v);
        }
        return answer;
    }
}

'Algorithm > Programmers' 카테고리의 다른 글

[Lv.2] 피로도 : Java / DFS+백트래킹  (0) 2025.07.05
[Lv.3] 이중우선순위큐  (0) 2025.07.04
[Lv.3] 네트워크 : BFS  (0) 2025.07.04
[Lv.2] 최솟값 만들기 : Java  (0) 2025.07.04
[Lv.2] 올바른 괄호 : Java  (1) 2025.07.04