diff --git "a/leetcode3/\354\240\225\354\247\204\354\230\201/1219. Path with Maximum Gold" "b/leetcode3/\354\240\225\354\247\204\354\230\201/1219. Path with Maximum Gold" new file mode 100644 index 00000000..7db5dcd2 --- /dev/null +++ "b/leetcode3/\354\240\225\354\247\204\354\230\201/1219. Path with Maximum Gold" @@ -0,0 +1,41 @@ +/** + * @param {number[][]} grid + * @return {number} + */ +var getMaximumGold = function(grid) { + let ans = 0; + let m = grid.length; + let n = grid[0].length; + + function dfs(i, j) { + if (i < 0 || i >= m || j < 0 || j >= n || grid[i][j] === 0) { + return 0; + } + + let gold = grid[i][j]; + + grid[i][j] = 0; + + // 상하좌우 중 가장 많은 금을 얻는 경로 + let up = dfs(i - 1, j); + let down = dfs(i + 1, j); + let left = dfs(i, j - 1); + let right = dfs(i, j + 1); + + // 다시 원래대로 돌려놓기 + grid[i][j] = gold; + + return gold + Math.max(up, down, left, right); + } + + // 모든 칸을 시작점으로 해보기 + for (let i = 0; i < m; i++) { + for (let j = 0; j < n; j++) { + if (grid[i][j] !== 0) { + ans = Math.max(ans, dfs(i, j)); + } + } + } + + return ans; +}; diff --git "a/leetcode3/\354\240\225\354\247\204\354\230\201/543. Diameter of Binary Tree" "b/leetcode3/\354\240\225\354\247\204\354\230\201/543. Diameter of Binary Tree" new file mode 100644 index 00000000..fcfd9b39 --- /dev/null +++ "b/leetcode3/\354\240\225\354\247\204\354\230\201/543. Diameter of Binary Tree" @@ -0,0 +1,30 @@ +/** + * Definition for a binary tree node. + * function TreeNode(val, left, right) { + * this.val = (val===undefined ? 0 : val) + * this.left = (left===undefined ? null : left) + * this.right = (right===undefined ? null : right) + * } + */ +/** + * @param {TreeNode} root + * @return {number} + */ +var diameterOfBinaryTree = function(root) { + let count = 0; + + function dfs(node){ + if (node == null) return 0; + + let left = dfs(node.left); + let right = dfs(node.right); + + count = Math.max(count, left+right); + + return Math.max(left, right) + 1; + } + + dfs(root); + + return count; +};