ALGORITHM/PROGRAMMERS

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

0298 2021. 8. 30. 15:16

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

 

코딩테스트 연습 - 정수 삼각형

[[7], [3, 8], [8, 1, 0], [2, 7, 4, 4], [4, 5, 2, 6, 5]] 30

programmers.co.kr

2021-08-30


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Solution {
    public int solution(int[][] triangle) {
        int answer = 0;
        int[][] dp = new int[triangle.length][triangle.length];
        dp[0][0= triangle[0][0];
        for(int i = 0; i < triangle.length - 1; i++) {
            for(int j = 0; j < triangle[i].length; j++) {
                dp[i+1][j] = Math.max(triangle[i+1][j] + dp[i][j], dp[i+1][j]);
                dp[i+1][j+1= Math.max(triangle[i+1][j+1+ dp[i][j], dp[i+1][j+1]);
            }
        }
 
        for(int i = 0; i < dp[dp.length-1].length; i++) answer = Math.max(answer, dp[dp.length-1][i]);
 
        return answer;
    }
}
cs

#문제풀이

꼭대기에서부터 계산할 때, 다음 트리의 본인 인덱스와 본인 인덱스+1에 영향을 끼치게 된다. 

 

그리고, 그 다음 트리에는 두 가지 이상의 값이 들어올 수 있으므로, max값을 체크해줘야한다.