From edf0296550e9ee2ffbb4bc90567f1e8621523b60 Mon Sep 17 00:00:00 2001 From: HodaeSsi Date: Sun, 5 Jan 2025 02:44:09 +0900 Subject: [PATCH 1/5] feat: Merge Two Sorted Lists --- merge-two-sorted-lists/HodaeSsi.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 merge-two-sorted-lists/HodaeSsi.py diff --git a/merge-two-sorted-lists/HodaeSsi.py b/merge-two-sorted-lists/HodaeSsi.py new file mode 100644 index 000000000..160f98033 --- /dev/null +++ b/merge-two-sorted-lists/HodaeSsi.py @@ -0,0 +1,22 @@ +from typing import Optional + + +class ListNode: + def __init__(self, val=0, next=None): + self.val = val + self.next = next + +class Solution: + def mergeTwoLists(self, list1: Optional[ListNode], list2: Optional[ListNode]) -> Optional[ListNode]: + if not list1: + return list2 + if not list2: + return list1 + + if list1.val < list2.val: + list1.next = self.mergeTwoLists(list1.next, list2) + return list1 + else: + list2.next = self.mergeTwoLists(list1, list2.next) + return list2 + From e9e0f4d609dd900d817d9db298dc5e74b96fcaea Mon Sep 17 00:00:00 2001 From: HodaeSsi Date: Sun, 5 Jan 2025 02:44:09 +0900 Subject: [PATCH 2/5] feat : Missing Number --- missing-number/HodaeSsi.py | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 missing-number/HodaeSsi.py diff --git a/missing-number/HodaeSsi.py b/missing-number/HodaeSsi.py new file mode 100644 index 000000000..e289dec5f --- /dev/null +++ b/missing-number/HodaeSsi.py @@ -0,0 +1,9 @@ +class Solution: + def missingNumber(self, nums: List[int]) -> int: + n = len(nums) + expected_sum = (n ** 2 + n) // 2 + + actual_sum = sum(nums) + + return expected_sum - actual_sum + From 1af7efece06c3401f355fb2e7bde5beb663d9383 Mon Sep 17 00:00:00 2001 From: HodaeSsi Date: Sun, 5 Jan 2025 02:44:09 +0900 Subject: [PATCH 3/5] feat: Word Search --- word-search/HodaeSsi.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 word-search/HodaeSsi.py diff --git a/word-search/HodaeSsi.py b/word-search/HodaeSsi.py new file mode 100644 index 000000000..dde94ac4d --- /dev/null +++ b/word-search/HodaeSsi.py @@ -0,0 +1,29 @@ +class Solution: + def dfs (self, board, word, visited, y, x, word_idx): + if word_idx == len(word): + return True + + if y < 0 or y >= len(board) or x < 0 or x >= len(board[0]) or visited[y][x] or board[y][x] != word[word_idx]: + return False + + visited[y][x] = True + for dy, dx in [(1, 0), (-1, 0), (0, -1), (0, 1)]: + if self.dfs(board, word, visited, y + dy, x + dx, word_idx + 1): + return True + visited[y][x] = False + return False + + def exist(self, board: List[List[str]], word: str) -> bool: + visited = [[False for _ in range(len(board[0]))] for _ in range(len(board))] + + # find fisrt letter in board + for y in range(len(board)): + for x in range(len(board[0])): + if board[y][x] == word[0]: + visited[y][x] = True + for dy, dx in [(1, 0), (-1, 0), (0, -1), (0, 1)]: + if self.dfs(board, word, visited, y + dy, x + dx, 1): + return True + visited[y][x] = False + return False + From cf0b6436f47da322afa3f93e3b7165a3c1024cd6 Mon Sep 17 00:00:00 2001 From: HodaeSsi Date: Sun, 5 Jan 2025 02:44:09 +0900 Subject: [PATCH 4/5] feat: Palindromic Substrings --- palindromic-substrings/HodaeSsi.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 palindromic-substrings/HodaeSsi.py diff --git a/palindromic-substrings/HodaeSsi.py b/palindromic-substrings/HodaeSsi.py new file mode 100644 index 000000000..29088685f --- /dev/null +++ b/palindromic-substrings/HodaeSsi.py @@ -0,0 +1,19 @@ +# space complexity: O(n^2) +# time complexity: O(n^2) (*exactly, n^2 / 2) +class Solution: + def countSubstrings(self, s: str) -> int: + dp = [[False] * len(s) for _ in range(len(s))] # dp[i][j] = True if s[i:j+1] is a palindrome + for i in range(len(s)): + for j in range(i, -1, -1): + if i == j: + dp[j][i] = True + continue + if i - j == 1: + dp[j][i] = s[i] == s[j] + continue + if s[i] == s[j]: + if dp[j+1][i-1]: + dp[j][i] = True + + return sum([sum(row) for row in dp]) + From 59c596a2bfa8ca360b8b707ee81d1bf30df46f65 Mon Sep 17 00:00:00 2001 From: HodaeSsi Date: Sun, 5 Jan 2025 02:44:09 +0900 Subject: [PATCH 5/5] feat: Coin Change --- coin-change/HodaeSsi.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 coin-change/HodaeSsi.py diff --git a/coin-change/HodaeSsi.py b/coin-change/HodaeSsi.py new file mode 100644 index 000000000..55ba105c8 --- /dev/null +++ b/coin-change/HodaeSsi.py @@ -0,0 +1,17 @@ +# space complexity: O(n) (여기서 n은 amount) +# time complexity: O(n * m) (여기서 n은 amount, m은 coins의 길이) +from typing import List + + +class Solution: + def coinChange(self, coins: List[int], amount: int) -> int: + dp = [float('inf')] * (amount + 1) + dp[0] = 0 + + for i in range(1, amount + 1): + for coin in coins: + if coin <= i: + dp[i] = min(dp[i], dp[i - coin] + 1) + + return dp[amount] if dp[amount] != float('inf') else -1 +