#include <string>
#include <vector>
using namespace std;
int solution(vector<vector<int>> triangle) {
int answer = 0;
for (int i = 1; i < triangle.size(); i++)
{
int endNum = triangle[i].size() - 1;
triangle[i][0] += triangle[i - 1][0];
triangle[i][endNum] += triangle[i - 1][endNum - 1];
answer = max(triangle[i][0], answer);
answer = max(triangle[i][endNum], answer);
for (int j = 1; j < endNum; j++)
{
int maxNum = max(triangle[i - 1][j - 1], triangle[i - 1][j]);
triangle[i][j] += maxNum;
answer = max(triangle[i][j], answer);
}
}
return answer;
}
풀이
1. 가장자리의 수는 바로 위의 수를 더해준다.
2. 현재 자리가 n일 때 위에 있는 수들이 n번째와 n-1번째의 수가 존재할 경우 둘중에 큰 수를 더해준다.
3. 구하면서 최대로 큰 값을 저장해준다.
https://programmers.co.kr/learn/courses/30/lessons/43105
'Algorithm > Programmers' 카테고리의 다른 글
[C++] 프로그래머스 거리두기 확인하기 (0) | 2023.12.29 |
---|---|
[C++] 프로그래머스 2016년 (0) | 2022.03.05 |
[C++] 프로그래머스 게임 맵 최단거리 (0) | 2021.12.30 |
[C++] 프로그래머스 행렬 테두리 회전하기 (0) | 2021.11.17 |
[C++] 프로그래머스 N-Queen 재귀 (0) | 2021.11.15 |