[Level2] 땅따먹기




땅따먹기

프로그래머스

DP 로 구하기

function solution (land) {
    const DP = new Array(land.length).fill(0);
    for (let i = 0; i < land.length; i++) {
        DP[i] = [];
    }

    for (let i = 0; i < land[0].length; i++) {
        DP[0][i] = land[0][i];
    }

    for (let i = 1; i < land.length; i++) {
        DP[i][0] =
            land[i][0] + Math.max(DP[i - 1][1], DP[i - 1][2], DP[i - 1][3]);
        DP[i][1] =
            land[i][1] + Math.max(DP[i - 1][0], DP[i - 1][2], DP[i - 1][3]);
        DP[i][2] =
            land[i][2] + Math.max(DP[i - 1][0], DP[i - 1][1], DP[i - 1][3]);
        DP[i][3] =
            land[i][3] + Math.max(DP[i - 1][0], DP[i - 1][1], DP[i - 1][2]);
    }

    return Math.max(DP[DP.length - 1]);
};



db 몰라서 실패했던 코드

function solution(land) {
  var answer = 0;
  let prevIndex, tempIndex;
  for (let i = 0; i < land.length; i++) {
    let max = 0;
    land[i].forEach((item, index) => {
      if (item > max && prevIndex != index) {
        max = item;
        tempIndex = index;
      }
    });
    prevIndex = tempIndex;
    answer += max;
  }
  return answer;
}

예전에 시도했다가 그때는 dp를 알지 못하여 실패했던 문제다.
물론 이번에도 다른 분들의 코드를 참고하긴 했다.
사실 아직도 긴가 민가 하다.
다음주는 각을 잡고 dp를 정복해봐야겠다.