From 872e5edb979a3a586466b36c0fa6b3a240d05901 Mon Sep 17 00:00:00 2001 From: Hojeong Park Date: Wed, 5 Aug 2026 12:30:11 +0900 Subject: [PATCH 01/10] reverse-linked-list solution --- reverse-linked-list/parkhojeong.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 reverse-linked-list/parkhojeong.py diff --git a/reverse-linked-list/parkhojeong.py b/reverse-linked-list/parkhojeong.py new file mode 100644 index 0000000000..0c18acfdd5 --- /dev/null +++ b/reverse-linked-list/parkhojeong.py @@ -0,0 +1,16 @@ +# Definition for singly-linked list. +# class ListNode: +# def __init__(self, val=0, next=None): +# self.val = val +# self.next = next +class Solution: + def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]: + prev, cur = None, head + + while cur: + next = cur.next + + cur.next = prev + prev, cur = cur, next + + return prev From b4b6029b83e08ed7b417526308541a154ec9e66d Mon Sep 17 00:00:00 2001 From: Hojeong Park Date: Wed, 5 Aug 2026 12:30:45 +0900 Subject: [PATCH 02/10] longest-substring-without-repeating-characters solution --- .../parkhojeong.py | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 longest-substring-without-repeating-characters/parkhojeong.py diff --git a/longest-substring-without-repeating-characters/parkhojeong.py b/longest-substring-without-repeating-characters/parkhojeong.py new file mode 100644 index 0000000000..a3f74786a9 --- /dev/null +++ b/longest-substring-without-repeating-characters/parkhojeong.py @@ -0,0 +1,22 @@ +class Solution: + def lengthOfLongestSubstring(self, s: str) -> int: + if s == "": + return 0 + + ch_to_idx = {} + start_idx = 0 + + i = 0 + length_of_longest_substring = 1 + for i in range(len(s)): + ch = s[i] + if ch in ch_to_idx and ch_to_idx[ch] >= start_idx: + start_idx = ch_to_idx[ch] + 1 + ch_to_idx[ch] = i + else: + ch_to_idx[ch] = i + length_of_substring = i - start_idx + 1 + length_of_longest_substring = max(length_of_longest_substring, length_of_substring) + + return length_of_longest_substring + From a51c4ad2f7a43522f97b676101829481ecbda486 Mon Sep 17 00:00:00 2001 From: Hojeong Park Date: Wed, 5 Aug 2026 12:30:52 +0900 Subject: [PATCH 03/10] number-of-islands solution --- number-of-islands/parkhojeong.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 number-of-islands/parkhojeong.py diff --git a/number-of-islands/parkhojeong.py b/number-of-islands/parkhojeong.py new file mode 100644 index 0000000000..b6d29e28d4 --- /dev/null +++ b/number-of-islands/parkhojeong.py @@ -0,0 +1,26 @@ +class Solution: + def numIslands(self, grid: List[List[str]]) -> int: + row_len = len(grid) + col_len = len(grid[0]) + + def dfs(row: int, col: int): + if not (0 <= row < row_len and 0 <= col < col_len): + return + + if grid[row][col] == "0": + return + + grid[row][col] = "0" + dfs(row - 1, col) + dfs(row + 1, col) + dfs(row, col - 1) + dfs(row, col + 1) + + num_islands = 0 + for row in range(row_len): + for col in range(col_len): + if grid[row][col] == "1": + num_islands += 1 + dfs(row, col) + + return num_islands From f0bdf2110c67eee84115c262507b9fd45d642684 Mon Sep 17 00:00:00 2001 From: Hojeong Park Date: Wed, 5 Aug 2026 12:30:58 +0900 Subject: [PATCH 04/10] unique-paths solution --- unique-paths/parkhojeong.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 unique-paths/parkhojeong.py diff --git a/unique-paths/parkhojeong.py b/unique-paths/parkhojeong.py new file mode 100644 index 0000000000..f8bab16913 --- /dev/null +++ b/unique-paths/parkhojeong.py @@ -0,0 +1,27 @@ +class Solution: + def uniquePaths(self, m: int, n: int) -> int: + row = [0] * m + grid = [row] * n + grid[0][0] = 1 + + row_len = len(grid) + col_len = len(row) + + def get_unique_path(row, col): + if row == 0 and col == 0: + return grid[0][0] + + if row == 0: + return grid[row][col - 1] + + if col == 0: + return grid[row - 1][col] + + return grid[row - 1][col] + grid[row][col - 1] + + + for row in range(row_len): + for col in range(col_len): + grid[row][col] = get_unique_path(row, col) + + return grid[-1][-1] From f643ccf81637ca8f31071927eae5769804820cee Mon Sep 17 00:00:00 2001 From: Hojeong Park Date: Wed, 5 Aug 2026 12:31:03 +0900 Subject: [PATCH 05/10] set-matrix-zeroes solution --- set-matrix-zeroes/parkhojeong.py | 34 ++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 set-matrix-zeroes/parkhojeong.py diff --git a/set-matrix-zeroes/parkhojeong.py b/set-matrix-zeroes/parkhojeong.py new file mode 100644 index 0000000000..d87a8b334e --- /dev/null +++ b/set-matrix-zeroes/parkhojeong.py @@ -0,0 +1,34 @@ +class Solution: + def setZeroes(self, matrix: List[List[int]]) -> None: + """ + Do not return anything, modify matrix in-place instead. + """ + + row_len = len(matrix) + col_len = len(matrix[0]) + MARKER = "#" + + def dfs(row, col, d_row, d_col): + if not (0 <= row < row_len and 0 <= col < col_len): + return + + if matrix[row][col] == 0: + return + + matrix[row][col] = MARKER + dfs(row + d_row, col + d_col, d_row, d_col) + + for row in range(row_len): + for col in range(col_len): + if matrix[row][col] == 0: + + matrix[row][col] = MARKER + dfs(row + 1, col, 1, 0) + dfs(row - 1, col, -1, 0) + dfs(row, col + 1, 0, 1) + dfs(row, col - 1, 0, -1) + + for row in range(row_len): + for col in range(col_len): + if matrix[row][col] == MARKER: + matrix[row][col] = 0 From 3a04bda478e2d7171d16bddc6327621790afdec2 Mon Sep 17 00:00:00 2001 From: Hojeong Park Date: Fri, 7 Aug 2026 02:32:25 +0900 Subject: [PATCH 06/10] reverse-linked-list: rename varaible --- reverse-linked-list/parkhojeong.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/reverse-linked-list/parkhojeong.py b/reverse-linked-list/parkhojeong.py index 0c18acfdd5..6862645954 100644 --- a/reverse-linked-list/parkhojeong.py +++ b/reverse-linked-list/parkhojeong.py @@ -5,12 +5,12 @@ # self.next = next class Solution: def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]: - prev, cur = None, head + prev_node, cur_node = None, head - while cur: - next = cur.next + while cur_node: + next_node = cur_node.next - cur.next = prev - prev, cur = cur, next + cur_node.next = prev_node + prev_node, cur_node = cur_node, next_node - return prev + return prev_node From f4fdb9b8bf1e5538fe40f8d088492fee9c1601b7 Mon Sep 17 00:00:00 2001 From: Hojeong Park Date: Fri, 7 Aug 2026 02:32:49 +0900 Subject: [PATCH 07/10] unique-paths: optimize space --- unique-paths/parkhojeong.py | 27 +++++---------------------- 1 file changed, 5 insertions(+), 22 deletions(-) diff --git a/unique-paths/parkhojeong.py b/unique-paths/parkhojeong.py index f8bab16913..87cd9a4a32 100644 --- a/unique-paths/parkhojeong.py +++ b/unique-paths/parkhojeong.py @@ -1,27 +1,10 @@ class Solution: def uniquePaths(self, m: int, n: int) -> int: - row = [0] * m - grid = [row] * n - grid[0][0] = 1 + column = [1] * m - row_len = len(grid) - col_len = len(row) + for col in range(n - 1): - def get_unique_path(row, col): - if row == 0 and col == 0: - return grid[0][0] + for row in range(1, m): + column[row] = column[row] + column[row - 1] - if row == 0: - return grid[row][col - 1] - - if col == 0: - return grid[row - 1][col] - - return grid[row - 1][col] + grid[row][col - 1] - - - for row in range(row_len): - for col in range(col_len): - grid[row][col] = get_unique_path(row, col) - - return grid[-1][-1] + return column[-1] From 86fa940f393a0205a0e6c369fa835d8fa416c69f Mon Sep 17 00:00:00 2001 From: Hojeong Park Date: Fri, 7 Aug 2026 02:46:08 +0900 Subject: [PATCH 08/10] set-matrix-zeroes: change marker value --- set-matrix-zeroes/parkhojeong.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/set-matrix-zeroes/parkhojeong.py b/set-matrix-zeroes/parkhojeong.py index d87a8b334e..bf00593ed6 100644 --- a/set-matrix-zeroes/parkhojeong.py +++ b/set-matrix-zeroes/parkhojeong.py @@ -6,11 +6,11 @@ def setZeroes(self, matrix: List[List[int]]) -> None: row_len = len(matrix) col_len = len(matrix[0]) - MARKER = "#" + MARKER = sys.maxsize def dfs(row, col, d_row, d_col): if not (0 <= row < row_len and 0 <= col < col_len): - return + return if matrix[row][col] == 0: return From 46721f25c277107d7e00eeeeaab46292a47ac378 Mon Sep 17 00:00:00 2001 From: Hojeong Park Date: Sat, 8 Aug 2026 01:34:51 +0900 Subject: [PATCH 09/10] set-matrix-zeroes: optimize time complexity --- set-matrix-zeroes/parkhojeong.py | 35 ++++++++++++-------------------- 1 file changed, 13 insertions(+), 22 deletions(-) diff --git a/set-matrix-zeroes/parkhojeong.py b/set-matrix-zeroes/parkhojeong.py index bf00593ed6..53de0d49ab 100644 --- a/set-matrix-zeroes/parkhojeong.py +++ b/set-matrix-zeroes/parkhojeong.py @@ -6,29 +6,20 @@ def setZeroes(self, matrix: List[List[int]]) -> None: row_len = len(matrix) col_len = len(matrix[0]) - MARKER = sys.maxsize - def dfs(row, col, d_row, d_col): - if not (0 <= row < row_len and 0 <= col < col_len): - return + zero_row_set = set() + zero_col_set = set() - if matrix[row][col] == 0: - return + for r in range(row_len): + for c in range(col_len): + if matrix[r][c] == 0: + zero_row_set.add(r) + zero_col_set.add(c) - matrix[row][col] = MARKER - dfs(row + d_row, col + d_col, d_row, d_col) + for r in zero_row_set: + for c in range(col_len): + matrix[r][c] = 0 - for row in range(row_len): - for col in range(col_len): - if matrix[row][col] == 0: - - matrix[row][col] = MARKER - dfs(row + 1, col, 1, 0) - dfs(row - 1, col, -1, 0) - dfs(row, col + 1, 0, 1) - dfs(row, col - 1, 0, -1) - - for row in range(row_len): - for col in range(col_len): - if matrix[row][col] == MARKER: - matrix[row][col] = 0 + for c in zero_col_set: + for r in range(row_len): + matrix[r][c] = 0 From 156ee8022ac3d187fc0e56a102b219b6b6d3d597 Mon Sep 17 00:00:00 2001 From: Hojeong Park Date: Sat, 8 Aug 2026 02:46:43 +0900 Subject: [PATCH 10/10] set-matrix-zeroes: simplify code --- set-matrix-zeroes/parkhojeong.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/set-matrix-zeroes/parkhojeong.py b/set-matrix-zeroes/parkhojeong.py index 53de0d49ab..0ff8955aec 100644 --- a/set-matrix-zeroes/parkhojeong.py +++ b/set-matrix-zeroes/parkhojeong.py @@ -16,10 +16,8 @@ def setZeroes(self, matrix: List[List[int]]) -> None: zero_row_set.add(r) zero_col_set.add(c) - for r in zero_row_set: + for r in range(row_len): for c in range(col_len): - matrix[r][c] = 0 + if r in zero_row_set or c in zero_col_set: + matrix[r][c] = 0 - for c in zero_col_set: - for r in range(row_len): - matrix[r][c] = 0