[프로그래머스] [C++] 정수 삼각형 (dp)
2021. 3. 17. 12:00ㆍ알고리즘/프로그래머스
1. 문제
정수로 이루어진 삼각형에서
맨끝에서부터 맨아래쪽 까지의 경로들에서 거쳐간 숫자의 합중 최대값을 구하여라
2. Iterative Dynamic Programming
이 문제는 삼각형의 제일 맨 아래부터 두개의 수중 큰 수를 바로 위의 정수에 더하면
자연스럽게 triangle[0][0]에 가장 큰값이 들어가게 된다.
이것은 반복적 동적계획법으로 재귀적으로도 풀수있지만 메모리가 좀 더 소비된다.
3. 코드
1
2
3
4
5
6
7
8
9
10
11
|
#include <string>
#include <vector>
using namespace std;
int solution(vector<vector<int>> triangle) {
for(int i = triangle.size()-2; i >= 0 ; i--)
for(int j = 0; j < triangle[i].size(); j++)
triangle[i][j] += max(triangle[i+1][j], triangle[i+1][j+1]);
return triangle[0][0];
}
|
cs |
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] [C++] 순위 (shortest path) (0) | 2021.03.20 |
---|---|
[프로그래머스] [C++] 가장 큰 수 (sort) (0) | 2021.03.18 |
[프로그래머스] [C++] 조이스틱 (0) | 2021.03.16 |
[프로그래머스] [C++] 소수 찾기 (brute-force) (0) | 2021.03.16 |
[프로그래머스] [C++] N으로 표현 (dp) (0) | 2021.03.15 |