반응형

문제 링크 : https://www.acmicpc.net/problem/1932

 

1932번: 정수 삼각형

문제 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 위 그림은 크기가 5인 정수 삼각형의 한 모습이다. 맨 위층 7부터 시작해서 아래에 있는 수 중 하나를 선택하여 아래층으로 내려올 때, 이제까지 선택된 수의 합이 최�

www.acmicpc.net

> 풀이

dp bottom-up 방식을 사용했습니다.

#include <bits/stdc++.h>
using namespace std;

int dp[501][501];
int a[501][501];
int res = -1;

int main(void) {
        int n;

        scanf("%d", &n);
        for (int i = 0; i < n; i++) {
                for (int j = 0; j <= i; j++) 
                        scanf("%d", &a[i][j]);
        }

        dp[0][0] = a[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] + a[i][j];
                        else if (j == i) dp[i][j] = dp[i - 1][j - 1] + a[i][j];
                        else dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - 1]) + a[i][j];
                }
        }
        sort(dp[n - 1], dp[n - 1] + n);
        printf("%d", dp[n - 1][n - 1]);
}

(개발 환경 : vs code)

반응형

+ Recent posts