diff --git "a/leetcode3/\354\240\225\354\247\204\354\230\201/1130. Minimum Cost Tree From Leaf Values" "b/leetcode3/\354\240\225\354\247\204\354\230\201/1130. Minimum Cost Tree From Leaf Values" new file mode 100644 index 00000000..e76c7a3c --- /dev/null +++ "b/leetcode3/\354\240\225\354\247\204\354\230\201/1130. Minimum Cost Tree From Leaf Values" @@ -0,0 +1,30 @@ +/** + * @param {number[]} arr + * @return {number} + */ +var mctFromLeafValues = function(arr) { + const n = arr.length; + + let dp = Array.from( + { length: n }, + () => Array(n).fill(0) + ); + + for (let i = n - 1; i >= 0; i--) { + for (let j = i + 1; j < n; j++) { + dp[i][j] = Infinity; + + for (let k = i; k < j; k++) { + let leftMax = Math.max(...arr.slice(i, k + 1)); + let rightMax = Math.max(...arr.slice(k + 1, j + 1)); + + let sum = dp[i][k] + dp[k + 1][j] + + leftMax * rightMax; + + dp[i][j] = Math.min(dp[i][j], sum); + } + } + } + + return dp[0][n - 1]; +}; diff --git "a/leetcode3/\354\240\225\354\247\204\354\230\201/4078. Three Fibonacci Sum" "b/leetcode3/\354\240\225\354\247\204\354\230\201/4078. Three Fibonacci Sum" new file mode 100644 index 00000000..0df47cb0 --- /dev/null +++ "b/leetcode3/\354\240\225\354\247\204\354\230\201/4078. Three Fibonacci Sum" @@ -0,0 +1,28 @@ +/** + * @param {number} n + * @return {boolean} + */ +var threeFibonacciSum = function(n) { + // 피보나치수열 -> dp + // dp[i] = dp[i-1] + dp[i-2] + + const dp = []; + + dp[0] = 0; + dp[1] = 1; + + let i = 2; + let sum = 0; + + while (sum <= n) { + dp[i] = dp[i-1] + dp[i-2]; + sum = dp[i] + dp[i-1] + dp[i-2]; + + if (sum == n){ + return true; + } + i++; + } + + return false; +};