diff --git a/binary-tree-level-order-traversal/juhui-jeong.java b/binary-tree-level-order-traversal/juhui-jeong.java new file mode 100644 index 0000000000..d7ec561c72 --- /dev/null +++ b/binary-tree-level-order-traversal/juhui-jeong.java @@ -0,0 +1,26 @@ +// BFS 구현 +// null 처리 잘 확인할 것... +class Solution { + public List> levelOrder(TreeNode root) { + List> result = new ArrayList<>(); + if (root == null) return result; + + Queue queue = new LinkedList<>(); + queue.offer(root); + + while(!queue.isEmpty()) { + int size = queue.size(); + List level = new ArrayList<>(); + + for (int i = 0; i < size; i++) { + TreeNode cur = queue.poll(); + level.add(cur.val); + + if (cur.left != null) queue.offer(cur.left); + if (cur.right != null) queue.offer(cur.right); + } + result.add(level); + } + return result; + } +} diff --git a/counting-bits/juhui-jeong.java b/counting-bits/juhui-jeong.java new file mode 100644 index 0000000000..8f6a875c6f --- /dev/null +++ b/counting-bits/juhui-jeong.java @@ -0,0 +1,24 @@ + + +class Solution { + public int[] countBits(int n) { + ArrayList list = new ArrayList<>(); + + for (int i = 0; i <= n; i++) { + int result = i; + int cnt = 0; + + while(result > 0) { + cnt += result%2; + result /= 2; + } + + list.add(cnt); + } + int[] ans = new int[list.size()]; + for (int i = 0; i < list.size(); i++) { + ans[i] = list.get(i); + } + return ans; + } +} diff --git a/house-robber-ii/juhui-jeong.java b/house-robber-ii/juhui-jeong.java new file mode 100644 index 0000000000..a122ac5475 --- /dev/null +++ b/house-robber-ii/juhui-jeong.java @@ -0,0 +1,21 @@ +class Solution { + public int rob(int[] nums) { + int n = nums.length; + if (n == 1) return nums[0]; + if (n == 2) return Math.max(nums[0], nums[1]); + + return Math.max(robRange(nums, 0, n - 2), robRange(nums, 1, n - 1)); + } + + private int robRange(int[] nums, int start, int end) { + int prev2 = 0; + int prev1 = 0; + + for (int i = start; i <= end; i++) { + int cur = Math.max(prev1, prev2 + nums[i]); + prev2 = prev1; + prev1 = cur; + } + return prev1; + } +}