반갑습니다!

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

알고리즘 문제 풀이

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

김덜덜이 2020. 4. 9. 16:14
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr

풀이

동적계획법으로 해결하였다. 맨 아랫줄에서 시작해서 맨 윗줄이 될 때까지 최댓값을 더하면서 값을 갱신해주면 된다.

코드

C++

#include <string>
#include <vector>
#include <algorithm>
using namespace std;

int solution(vector<vector<int>> triangle) {
    for(int i=triangle.size()-2; i>=0; i--)
        for(int j=0; j<triangle[i].size(); j++)
            triangle[i][j] = max(triangle[i+1][j], triangle[i+1][j+1]) + triangle[i][j];
    return triangle[0][0];
}

Java

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