

제한 사항이 10만 이기 때문에 for 문을 한번씩 써야된다는 것을 알수 있다.
행 / 열의 개념을 잘 생각해야되는 dp 문제이다.
1행 1 열 2 열 3 열 4 열
2행
3행
4행 .... 이런식으로 밑으로 갈경우 1열 ~ 4열 사이에 가장 큰 수를 구하면 된다.
dp 개념을 이해한다면 금방 풀수 있는 문제이다.
dp는 한 지점을 정하고 여기까지 왔을때의 경우수 중 가장 큰 경우가 무엇일까?
를 생각하면 금방 이해할수 있다. 이문제에서도 math. max 를 구해 가장 큰수를 구한다음 끝까지 온 경우중 가장 큰수를 return 하는 식으로 두었다.
function solution(land) {
var answer = 0;
// [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
for(var i=1; i<land.length; i++){
//dp 문제임
land[i][0]+= Math.max(land[i-1][1],land[i-1][2],land[i-1][3]);
land[i][1]+= Math.max(land[i-1][0],land[i-1][2],land[i-1][3]);
land[i][2]+= Math.max(land[i-1][1],land[i-1][0],land[i-1][3]);
land[i][3]+= Math.max(land[i-1][1],land[i-1][2],land[i-1][0]);
}
return Math.max(land[land.length-1][0],land[land.length-1][1],land[land.length-1][2],land[land.length-1][3] );
}