https://programmers.co.kr/learn/courses/30/lessons/12913
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int solution(vector<vector<int> > land)
{
int answer = 0;
int Row = land.size();
int Col = land[0].size();
vector<vector<int>> dp(Row, vector<int>(Col, 0));
for (int i = 0; i < Col; i++)
{
dp[0][i] = land[0][i];
}//맨처음 줄 시작으로 깔고 시작한다.
for (int i = 1; i < Row; i++)
{
for (int j = 0; j < 4; j++)
{
for (int k = 0; k < 4; k++)
{
if (j == k) continue;
else
{
dp[i][j] = max(dp[i - 1][k] + land[i][j], dp[i][j]);//더 큰 값으로 업데이트 한다.
}
}
}
}
int Max(0);
for (int i = 0; i < Col; i++)
{
Max = max(dp[Row - 1][i], Max);//마지막열중 제일 큰 값 가져온다.
}
return Max;
}
여기서 이 부분이 핵심이다.
for (int j = 0; j < 4; j++)
{
for (int k = 0; k < 4; k++)
{
if (j == k) continue;
else
{
dp[i][j] = max(dp[i - 1][k] + land[i][j], dp[i][j]);//더 큰 값으로 업데이트 한다.
}
}
}
이해하기.