diff --git a/binary-tree-level-order-traversal/parkhojeong.py b/binary-tree-level-order-traversal/parkhojeong.py new file mode 100644 index 0000000000..09657979c1 --- /dev/null +++ b/binary-tree-level-order-traversal/parkhojeong.py @@ -0,0 +1,28 @@ +# Definition for a binary tree node. +# class TreeNode: +# def __init__(self, val=0, left=None, right=None): +# self.val = val +# self.left = left +# self.right = right +class Solution: + def levelOrder(self, root: TreeNode | None) -> list[list[int]]: + if root is None: + return [] + + deq = deque([root]) + + output = [] + while deq: + nodes = [] + + for _ in range(len(deq)): + node = deq.popleft() + nodes.append(node.val) + if node.left: + deq.append(node.left) + if node.right: + deq.append(node.right) + + output.append(nodes) + + return output diff --git a/counting-bits/parkhojeong.py b/counting-bits/parkhojeong.py new file mode 100644 index 0000000000..fde40c0e31 --- /dev/null +++ b/counting-bits/parkhojeong.py @@ -0,0 +1,13 @@ +class Solution: + def countBits(self, n: int) -> list[int]: + if n == 0: + return [0] + + arr = [0, 1] + def count(n: int) -> int: + return arr[n // 2] + n % 2 + + for i in range(2, n + 1): + arr.append(count(i)) + + return arr diff --git a/house-robber-ii/parkhojeong.py b/house-robber-ii/parkhojeong.py new file mode 100644 index 0000000000..931b149ec8 --- /dev/null +++ b/house-robber-ii/parkhojeong.py @@ -0,0 +1,21 @@ +class Solution: + def rob(self, nums: list[int]) -> int: + if len(nums) == 1: + return nums[0] + + return max( + max(self.rob_linear(nums[:-1])), + max(self.rob_linear(nums[1:] )) + ) + + def rob_linear(self, nums: list[int]): + N = len(nums) + + dp = [0] * (N + 1) + dp[1] = nums[0] + + for i in range(2, N + 1): + dp[i] = max(dp[i - 2] + nums[i - 1], dp[i - 1]) + + + return dp