반응형
https://www.acmicpc.net/problem/1932
arr[i][j] = i행 j열까지 내려왔을 때의 최댓값을 저장해줍니다.
각 행에서 가장 왼쪽 값은, 바로 상위 행에서 가장 왼쪽 경로를 통해서만 내려올 수 있습니다.
-> arr[i][j] += arr[i-1][j];
각 행에서 가장 오른쪽 값은, 바로 상위 행에서 가장 오른쪽 경로를 통해서만 내려올 수 있습니다.
-> arr[i][j] += arr[i-1][j-1];
그 외의 값은, 바로 상위 행에서 왼쪽 경로와 오른쪽 경로를 통해서 내려올 수 있습니다.
-> arr[i][j] += max(arr[i-1][j], arr[i-1][j-1]);
#include <iostream>
#include <algorithm>
using namespace std;
int n, arr[501][501] = { 0 }, ans = 0;
int main() {
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= i; j++) {
scanf("%d", &arr[i][j]);
arr[i][j] += max(arr[i - 1][j - 1], arr[i - 1][j]);
}
}
for (int i = 1; i <= n; i++) {
ans = max(ans, arr[n][i]);
}
printf("%d", ans);
}
반응형
'Algorithm' 카테고리의 다른 글
백준 1477 : 휴게소 세우기 (0) | 2021.11.18 |
---|---|
백준 9184 : 신나는 함수 실행 (0) | 2021.11.18 |
백준 1949 : 우수 마을 (0) | 2021.11.18 |
백준 2213 : 트리의 독립집합 (0) | 2021.11.18 |
백준 15681 : 트리와 쿼리 (0) | 2021.11.18 |