From 09f1ea0178f933905700765117621e2996c32a73 Mon Sep 17 00:00:00 2001 From: sangbeenmoon Date: Thu, 21 May 2026 09:55:40 +0900 Subject: [PATCH 1/4] solved same-tree. --- missing-number/sangbeenmoon.py | 12 ++++++++++++ same-tree/sangbeenmoon.py | 18 ++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 missing-number/sangbeenmoon.py create mode 100644 same-tree/sangbeenmoon.py diff --git a/missing-number/sangbeenmoon.py b/missing-number/sangbeenmoon.py new file mode 100644 index 0000000000..1b638e58a8 --- /dev/null +++ b/missing-number/sangbeenmoon.py @@ -0,0 +1,12 @@ +class Solution: + def missingNumber(self, nums: List[int]) -> int: + visited = {} + for num in nums: + visited[num] = True + for i in range(len(nums) + 1): + if i in visited: + continue + else: + return i + return 0 + diff --git a/same-tree/sangbeenmoon.py b/same-tree/sangbeenmoon.py new file mode 100644 index 0000000000..a0c2e791d7 --- /dev/null +++ b/same-tree/sangbeenmoon.py @@ -0,0 +1,18 @@ +# 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 isSameTree(self, p: Optional[TreeNode], q: Optional[TreeNode]) -> bool: + + if (p and not q) or (not p and q): + return False + + if not p and not q: + return True + + if p.val != q.val: + return False + return self.isSameTree(p.left, q.left) and self.isSameTree(p.right, q.right) From 94823b231f6bd9ba6b96b1511c931a01701a4cea Mon Sep 17 00:00:00 2001 From: sangbeenmoon Date: Mon, 22 Jun 2026 09:52:33 +0900 Subject: [PATCH 2/4] solved top-k-frequent-elements. --- top-k-frequent-elements/sangbeenmoon.py | 27 +++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/top-k-frequent-elements/sangbeenmoon.py b/top-k-frequent-elements/sangbeenmoon.py index f2ac82380d..7da37d2819 100644 --- a/top-k-frequent-elements/sangbeenmoon.py +++ b/top-k-frequent-elements/sangbeenmoon.py @@ -29,3 +29,30 @@ def topKFrequent(self, nums: List[int], k: int) -> List[int]: +# TC: O(nlogn) +# SC: O(n) + +class Solution: + def topKFrequent(self, nums: List[int], k: int) -> List[int]: + count_map = {} + + for num in nums: + if num in count_map: + count_map[num] = count_map[num] + 1 + else: + count_map[num] = 1 + + tuple_list = [] + + for item in count_map.items(): + tuple_list.append(item) + + tuple_list.sort(key=lambda x: x[1], reverse=True) + + answer = [] + for i in range(k): + answer.append(tuple_list[i][0]) + + + return answer + From 79a90558a40fdd0791c532f98665123c64394134 Mon Sep 17 00:00:00 2001 From: sangbeenmoon Date: Mon, 22 Jun 2026 09:54:06 +0900 Subject: [PATCH 3/4] remove outdated files. --- missing-number/sangbeenmoon.py | 12 ------------ same-tree/sangbeenmoon.py | 18 ------------------ 2 files changed, 30 deletions(-) delete mode 100644 missing-number/sangbeenmoon.py delete mode 100644 same-tree/sangbeenmoon.py diff --git a/missing-number/sangbeenmoon.py b/missing-number/sangbeenmoon.py deleted file mode 100644 index 1b638e58a8..0000000000 --- a/missing-number/sangbeenmoon.py +++ /dev/null @@ -1,12 +0,0 @@ -class Solution: - def missingNumber(self, nums: List[int]) -> int: - visited = {} - for num in nums: - visited[num] = True - for i in range(len(nums) + 1): - if i in visited: - continue - else: - return i - return 0 - diff --git a/same-tree/sangbeenmoon.py b/same-tree/sangbeenmoon.py deleted file mode 100644 index a0c2e791d7..0000000000 --- a/same-tree/sangbeenmoon.py +++ /dev/null @@ -1,18 +0,0 @@ -# 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 isSameTree(self, p: Optional[TreeNode], q: Optional[TreeNode]) -> bool: - - if (p and not q) or (not p and q): - return False - - if not p and not q: - return True - - if p.val != q.val: - return False - return self.isSameTree(p.left, q.left) and self.isSameTree(p.right, q.right) From 667ffe0f7d6a13e1e3172d124a6650589dfd8982 Mon Sep 17 00:00:00 2001 From: sangbeenmoon Date: Sat, 27 Jun 2026 18:22:40 +0900 Subject: [PATCH 4/4] LCS, house-robber. --- house-robber/sangbeenmoon.py | 26 +++++++++++++++ longest-consecutive-sequence/sangbeenmoon.py | 33 ++++++++++++++++++++ 2 files changed, 59 insertions(+) diff --git a/house-robber/sangbeenmoon.py b/house-robber/sangbeenmoon.py index 6b734a01c8..714ce00767 100644 --- a/house-robber/sangbeenmoon.py +++ b/house-robber/sangbeenmoon.py @@ -14,3 +14,29 @@ def rob(self, nums: List[int]) -> int: dp[i] = max(dp[i-2] + nums[i] , dp[i-1]) return dp[len(nums) - 1] + + + + + +# dp[i] = max(dp[i-1], dp[i-2] + num[i]) +# TC : O(n) +# SC : O(n) + +class Solution: + def rob(self, nums: List[int]) -> int: + dp = [0] * len(nums) + + dp[0] = nums[0] + + if len(nums) == 1: + return dp[0] + + dp[1] = max(nums[0],nums[1]) + + for i in range(2, len(nums)): + dp[i] = max(dp[i-1], dp[i-2] + nums[i]) + + return max(dp) + + diff --git a/longest-consecutive-sequence/sangbeenmoon.py b/longest-consecutive-sequence/sangbeenmoon.py index fa310273d9..334ad8b5f6 100644 --- a/longest-consecutive-sequence/sangbeenmoon.py +++ b/longest-consecutive-sequence/sangbeenmoon.py @@ -16,3 +16,36 @@ def longestConsecutive(self, nums: List[int]) -> int: answer = max(answer , length) return answer + + + +# 정렬하면 쉬운데 O(n)이 필요하네 → set으로 조회를 O(1)로 → 근데 중복으로 세네 → 시작점에서만 세자 + +# TC : O(n) +# SC : O(n) + +class Solution: + def longestConsecutive(self, nums: List[int]) -> int: + s = set() + + for num in nums: + s.add(num) + + ans = 0 + + for num in s: + if num - 1 in s: + continue + + sub_ans = 1 + next_num = num + 1 + while next_num in s: + sub_ans = sub_ans + 1 + next_num = next_num + 1 + ans = max(ans, sub_ans) + + return ans + + + +