본문 바로가기
Algorithm/Programmers Java

[JAVA] 프로그래머스 LEVEL3 정수 삼각형

by 제우제우 2024. 10. 30.

https://school.programmers.co.kr/learn/courses/30/lessons/43105

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

코딩테스트 연습 > 동적계획법(Dynamic Programming) > 정수 삼각형

 

난이도: LEVEL3

알고리즘 유형: 다이나믹 프로그래밍 

정답 코드 

class Solution {
    public int solution(int[][] triangle) {
        int n = triangle.length; // 삼각형 높이 & 밑변
        for(int i = n - 2; i >= 0; i--){
            for(int j = 0; j <= i; j++){
                triangle[i][j] += Math.max(triangle[i+1][j], triangle[i+1][j+1]);
            }    
        }
        return triangle[0][0];
    }
}

 

삼각형 아래에서 위로 누적해서 올라간다.

 

점화식 

triangle[i][j] = triangle[i][j] (본인 정점이 가지는 값) + Math.max(triangle[i+1][j], triangle[i+1][j+1])