diff --git a/binary-tree-level-order-traversal/se6816.java b/binary-tree-level-order-traversal/se6816.java new file mode 100644 index 0000000000..46f5315f62 --- /dev/null +++ b/binary-tree-level-order-traversal/se6816.java @@ -0,0 +1,27 @@ +class Solution { + public List> levelOrder(TreeNode root) { + if(root == null) { + return new ArrayList<>(); + } + List> list = new ArrayList<>(); + dfs(root, 0, list); + return list; + } + + public void dfs(TreeNode node, int depth, List> list) { + if(list.size() == depth) { + list.add(new ArrayList<>()); + } + + List dest = list.get(depth); + dest.add(node.val); + + if(node.left != null) { + dfs(node.left, depth + 1, list); + } + + if(node.right != null) { + dfs(node.right, depth + 1, list); + } + } +} diff --git a/counting-bits/se6816.java b/counting-bits/se6816.java new file mode 100644 index 0000000000..3f503e305e --- /dev/null +++ b/counting-bits/se6816.java @@ -0,0 +1,9 @@ +class Solution { + public int[] countBits(int n) { + int[] list = new int[n + 1]; + for(int i = 0; i <= n; i++) { + list[i] = Integer.bitCount(i); + } + return list; + } +} diff --git a/house-robber-ii/se6816.java b/house-robber-ii/se6816.java new file mode 100644 index 0000000000..b2aa633dce --- /dev/null +++ b/house-robber-ii/se6816.java @@ -0,0 +1,30 @@ +class Solution { + public int rob(int[] nums) { + if(nums.length == 1) { + return nums[0]; + } + + // 첫 집을 턴 경우 + int[] dp = new int[nums.length]; + dp[0] = nums[0]; + if(nums.length != 1) { + dp[1] = Math.max(nums[0], nums[1]); + } + + for (int i = 2; i < nums.length; i++) { + dp[i] = Math.max(dp[i-1], nums[i] + dp[i-2]); + } + + // 첫 집 안 턴 경우 + int[] dp2 = new int[nums.length-1]; + dp2[0] = nums[1]; + if (nums.length > 2) { + dp2[1] = Math.max(nums[1], nums[2]); + } + for (int i = 2; i < nums.length-1; i++) { + dp2[i] = Math.max(dp2[i-1], nums[i+1] + dp2[i-2]); + } + + return Math.max(dp[nums.length-2], dp2[nums.length-2]); + } +}