💡Problem Solving/Programmers

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

gom20 2021. 11. 9. 18:40

문제

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

풀이

dp 문제로 각 위치마다 최대값을 저장해나간다. 

마지막 행에서 가장 큰 값이 답이된다.

2021.11.08 - [Problem Solving/BOJ] - [BOJ 1932] 정수 삼각형 (Java)

 

[BOJ 1932] 정수 삼각형 (Java)

문제 https://www.acmicpc.net/problem/1932 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net 풀이 7 7 3 10 8..

gom20.tistory.com

 

소스코드

class Solution {
    public int solution(int[][] triangle) {
        int[][] dp = new int[triangle.length][triangle.length];
        
        dp[0][0] = triangle[0][0];
        for(int i = 1; i < triangle.length; i++){
            for(int j = 0; j <= i; j++){
                dp[i][j] = triangle[i][j];
                if(j == 0){
                    dp[i][j] += dp[i-1][j];
                } else if (j == i){
                    dp[i][j] += dp[i-1][j-1];
                } else {
                    dp[i][j] += Math.max(dp[i-1][j], dp[i-1][j-1]);
                }             
            }
        }
        
        int max = 0; 
        for(int i = 0; i < triangle.length; i++){
            max = Math.max(dp[triangle.length-1][i], max);
        }
        
        return max;
    }
}