반응형
programmers.co.kr/learn/courses/30/lessons/43105
간단한 dp문제였습니다.
풀이방법
1. d배열을 정의합니다
현재 i층의 j번째 원소가 최적의 방법으로 선택했을 때의 최대값 : max(i-1번째 층 j-1원소, i-1 번째 층 j원소) + 삼각형 i층 j번째 원소의 값
2. 마지막 층의 d의 원소들 중 최대값을 반환합니다.
Code
#include <bits/stdc++.h>
using namespace std;
int solution(vector<vector<int>> triangle) {
int size = triangle.size();
int answer = 0;
int d[501][501];
memset(d,0,sizeof(d));
for(int i = 1; i <= size; i++)
for(int j = 1; j <= triangle[i-1].size(); j++)
d[i][j] += max(d[i-1][j-1],d[i-1][j]) + triangle[i-1][j-1];
for(int i = 1; i <= triangle[size-1].size(); i++)
answer = max(answer, d[triangle[size-1].size()][i]);
return answer;
}
int main(){
vector <vector<int>> triangle;
triangle.push_back({7});
triangle.push_back({3,8});
triangle.push_back({8,1,0});
triangle.push_back({2,7,4,4});
triangle.push_back({4,5,2,6,5});
cout << solution(triangle);
}
'Algorithm > DP(Dynamic Programing)' 카테고리의 다른 글
(C++) - 백준(BOJ) 12852번 : 1로 만들기 2 답 (0) | 2021.02.22 |
---|---|
(C++) - 프로그래머스(고득점 kit - 동적계획법(DP)) : 등굣길 (0) | 2021.02.21 |
(C++) - 프로그래머스(연습문제) : 3 x n 타일링 (2) | 2021.02.15 |
(C++) - 백준(BOJ) 9625번 : BABBA 답 (0) | 2021.02.07 |
(C++) - 백준(BOJ) 2346번 : 풍선 터뜨리기 답 (0) | 2021.02.03 |