[프로그래머스] 땅따먹기 / 동적 프로그래밍(DP) /

쿼카쿼카·2023년 3월 15일
0

알고리즘

목록 보기
43/67

코드

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)을 몇 번씩이나 계산하는 불상사가 생겨요! 이해가 안 가신다구요? 당여하죠 저도 이해를 겨우 해서 여기에 쓰는데 이글이 이해가 갈리가 없죠 ㅎㅎㅎ
  • 암튼! 다음에 또 계산할 때 함수 실행되지 않고 저장된 값을 꺼내쓰는 거에요!
  • 삼각형 제일 밑에서 가장 큰 수를 찾을 때 각 삼각형의 자리마다 가장 큰 수를 더해서 저장해두는 거에요!
  • 그러면 굳이 또 위에서부터 계산할 필요없이 가장 큰 수만 가지고 계산한다면 최댓값을 구할 수 있겠죠?

와우 정말 이해가 안 가게 적어두셨네요!!

profile
쿼카에요

0개의 댓글