Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions src/C6 다이나믹 프로그래밍/P01 JS2 1로 만들기.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
function solution(x) {
let memo = new Array(30001).fill(0);
for (let i = 2; i < x + 1; i++) {
memo[i] = memo[i - 1] + 1;
if (i % 2 === 0) {
memo[i] = Math.min(memo[i], memo[i / 2] + 1);
}
if (i % 3 === 0) {
memo[i] = Math.min(memo[i], memo[i / 3] + 1);
}
if (i % 5 === 0) {
memo[i] = Math.min(memo[i], memo[i / 5] + 1);
}
}
return memo[x];
}

console.log(solution(4));

// 1을 만든다는 의미는 최소값을 구한다고 생각하면 될듯
13 changes: 13 additions & 0 deletions src/C6 다이나믹 프로그래밍/P02 JS3 개미 전사.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
function solution(n, k) {
let table = new Array(100).fill(0);
table[0] = k[0];
table[1] = Math.max(k[0], k[1]);
for (let i = 2; i < n; i++) {
table[i] = Math.max(table[i - 1], table[i - 2] + k[i]);
}
return table[n - 1];
}

const N = 5;
const K = [1, 3, 6, 5, 4];
console.log(solution(N, K));
12 changes: 12 additions & 0 deletions src/C6 다이나믹 프로그래밍/P03 JS2 바닥공사.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
function solution(n) {
let table = new Array(1001).fill(0);
table[1] = 1;
table[2] = 3;
for (let i = 3; i < n + 1; i++) {
table[i] = table[i - 1] + 2 * table[i - 2];
}

return table[n] % 796796;
}

console.log(solution(3));
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
function solution(arr, target) {
let table = new Array(target + 1).fill(10001);
// target + 1 주의 그리고 바로 -1을 넣을 경우 최소값 판별시 혼돈이 올 수 있음
table[0] = 0;
for (let i = 0; i < arr.length; i++) {
for (let j = arr[i]; j < target + 1; j++) {
if (table[j - arr[i]] !== 10001) {
table[j] = Math.min(table[j], table[j - arr[i]] + 1);
}
}
}

return table[target] === 10001 ? -1 : table[target];
}

const currency = [2];
const sum = 15;
console.log(solution(currency, sum));
17 changes: 17 additions & 0 deletions src/C6 다이나믹 프로그래밍/Q32 JS2 정수 삼각형.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
function solution(n, triangle) {
let pre = triangle[0];
let temp = [];

for (let i = 1; i < n; i++) {
pre = triangle[i].map((val, idx) => {
if (idx === 0) return pre[0] + val;
if (idx === i) return pre[i - 1] + val;
return Math.max(pre[idx - 1], pre[idx]) + val;
});
}

return Math.max(...pre);
}

const t = [[7], [3, 8], [8, 1, 0], [2, 7, 4, 4], [4, 5, 2, 6, 5]];
console.log(solution(5, t));