728x90
반응형
1932번: 정수 삼각형
문제
https://www.acmicpc.net/problem/1932
1932번: 정수 삼각형
첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다.
www.acmicpc.net
풀이
삼각형의 가장 위에서 아래로 차례대로 더해 최댓값을 구하는 문제. dp를 사용해 풀었다.
삼각형의 어느 위치에서 합의 최댓값이 되려면 그 윗 층의 인접한 두 위치까지의 합 중 더 큰 곳에 해당 위치의 값을 더한 값이 된다. 이를 구현하면 끝인 문제다.
코드
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
int n;
cin >> n;
vector<vector<int>> v(501, vector<int>(501, 0)), dp(501, vector<int>(501, 0));
for (int i = 0; i < n; i++)
for (int j = 0; j <= i; j++)
cin >> v[i][j];
dp[0][0] = v[0][0];
for (int i = 0; i < n - 1; i++)
for (int j = 0; j <= i + 1; j++)
dp[i + 1][j] = max(dp[i][j], dp[i][j - 1]) + v[i + 1][j];
cout << *max_element(dp[n - 1].begin(), dp[n - 1].end()) << '\n';
return 0;
}
728x90
반응형
'Problem Solving > BOJ' 카테고리의 다른 글
[백준 / BOJ] C++ 1292 쉽게 푸는 문제 (0) | 2023.02.19 |
---|---|
[백준 / BOJ] C++ 1202 보석 도둑 (0) | 2023.02.19 |
[백준 / BOJ] C++ 11779 최소비용 구하기 2 (1) | 2023.02.19 |
[백준 / BOJ] C++ 1916 최소비용 구하기 (0) | 2023.02.19 |
[백준 / BOJ] C++ 1504 특정한 최단 경로 (0) | 2023.02.19 |