[리트코드] 746. Min Cost Climbing Stairs
746. Min Cost Climbing Stairs
나의 풀이
/**
* @param {number[]} cost
* @return {number}
*/
var minCostClimbingStairs = function (cost) {
const dp = [0, 0];
dp.push(Math.min(cost[0], cost[1]));
for (let i = 3; i <= cost.length; i++) {
let next = Math.min(dp[i - 2] + cost[i - 2], dp[i - 1] + cost[i - 1]);
dp.push(next);
}
return dp[cost.length];
};
console.log(minCostClimbingStairs([10, 15, 20]));
console.log(minCostClimbingStairs([1, 100, 1, 1, 1, 100, 1, 1, 100, 1]));
알고리즘 문제 중 내가 가장 약한 부분인 dp를 처음 개념부터 천천히 짚고 넘어가고자 한다.
유튜브 해설 바로가기
64. Minimum Path Sum
나의 풀이
/**
* @param {number[][]} grid
* @return {number}
*/
var minPathSum = function (grid) {
const m = grid.length;
const n = grid[0].length;
for (let i = 0; i < m; i++) {
for (let j = 0; j < n; j++) {
if (i === 0) {
if (j === 0) continue;
else grid[i][j] += grid[i][j - 1];
} else if (j === 0) grid[i][j] += grid[i - 1][j];
else {
grid[i][j] += Math.min(grid[i - 1][j], grid[i][j - 1]);
}
}
}
return grid[m - 1][n - 1];
};
console.log(
minPathSum([
[1, 3, 1],
[1, 5, 1],
[4, 2, 1],
])
);
저번에 풀었던 문제지만, 위의 문제를 2D로 변형만 하면 같은 문제라서 다시 한번 풀어보았다.