코드
function solution(land) {
let answer = 0;
for(let i=1; i<land.length; i++) {
for(let j=0; j<4; j++) {
land[i][j] += Math.max(land[i-1][(j+1)%4], land[i-1][(j+2)%4], land[i-1][(j+3)%4]);
}
}
return Math.max(...land[land.length-1]);
}
DP(Dynamic Programming) / 동적 프로그래밍
- 큰 계산을 작은 계산들로 쪼개서 푸는 방법이라고 이해했어요!
- 피보나치나 DFS에서 재귀함수로 풀다보면 fibonacci(3)을 몇 번씩이나 계산하는 불상사가 생겨요! 이해가 안 가신다구요? 당여하죠 저도 이해를 겨우 해서 여기에 쓰는데 이글이 이해가 갈리가 없죠 ㅎㅎㅎ
- 암튼! 다음에 또 계산할 때 함수 실행되지 않고 저장된 값을 꺼내쓰는 거에요!

- 삼각형 제일 밑에서 가장 큰 수를 찾을 때 각 삼각형의 자리마다 가장 큰 수를 더해서 저장해두는 거에요!
- 그러면 굳이 또 위에서부터 계산할 필요없이 가장 큰 수만 가지고 계산한다면 최댓값을 구할 수 있겠죠?
와우 정말 이해가 안 가게 적어두셨네요!!