[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를 정복해봐야겠다.