본문 바로가기
알고리즘/DP

백준 1932번 : 정수 삼각형

by Jason95 2021. 1. 29.

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

내 풀이(2021.1.29.) :

#include <iostream>
#include <algorithm>

using namespace std;

int map[500][500];
int dp[500][500];

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	int N; cin >> N;
	for (int i = 0; i < N; i++) {
		for (int j = 0; j < i + 1; j++) {
			cin >> map[i][j];
		}
	}

	dp[0][0] = map[0][0];
	for (int i = 1; i < N; i++) {
		for (int j = 0; j < i + 1; j++) {
			dp[i][j] = max(dp[i - 1][j - 1], dp[i - 1][j]) + map[i][j];
		}
	}

	int ma = 0;
	for (int i = 0; i < N; i++) {
		ma = max(dp[N - 1][i], ma);
	}

	cout << ma;

	return 0;
}