From 541e5467603672cf1d0ff68d962e990c0f42a40f Mon Sep 17 00:00:00 2001 From: Hojeong Park Date: Sat, 15 Aug 2026 20:09:43 +0900 Subject: [PATCH 1/4] reverse-bits solution --- reverse-bits/parkhojeong.py | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 reverse-bits/parkhojeong.py diff --git a/reverse-bits/parkhojeong.py b/reverse-bits/parkhojeong.py new file mode 100644 index 0000000000..a190aaee93 --- /dev/null +++ b/reverse-bits/parkhojeong.py @@ -0,0 +1,9 @@ +class Solution: + def reverseBits(self, n: int) -> int: + m = 0 + for i in range(32): + remainder = n % 2 + n = n // 2 + m += pow(2, 31 - i) * remainder + + return m From 8f1bacf20fea846fa0cb6fb62c348b13ce29aa2d Mon Sep 17 00:00:00 2001 From: Hojeong Park Date: Sat, 15 Aug 2026 20:09:52 +0900 Subject: [PATCH 2/4] clone-graph solution --- clone-graph/parkhojeong.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 clone-graph/parkhojeong.py diff --git a/clone-graph/parkhojeong.py b/clone-graph/parkhojeong.py new file mode 100644 index 0000000000..05ef48209c --- /dev/null +++ b/clone-graph/parkhojeong.py @@ -0,0 +1,31 @@ +""" +# Definition for a Node. +class Node: + def __init__(self, val = 0, neighbors = None): + self.val = val + self.neighbors = neighbors if neighbors is not None else [] +""" + +from typing import Optional +class Solution: + def cloneGraph(self, node: Optional['Node']) -> Optional['Node']: + + visited = {} + + def deep_copy(node): + if node is None: + return None + + cur = Node(node.val) + visited[node.val] = cur + + cur.val = node.val + for neighbor in node.neighbors: + if neighbor.val in visited: + cur.neighbors.append(visited[neighbor.val]) + else: + cur.neighbors.append(deep_copy(neighbor)) + + return cur + + return deep_copy(node) From f7654be1da64e3f90ab0e1803bcaaa590ad62415 Mon Sep 17 00:00:00 2001 From: Hojeong Park Date: Sat, 15 Aug 2026 20:09:59 +0900 Subject: [PATCH 3/4] palindromic-substrings solution --- palindromic-substrings/parkhojeong.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 palindromic-substrings/parkhojeong.py diff --git a/palindromic-substrings/parkhojeong.py b/palindromic-substrings/parkhojeong.py new file mode 100644 index 0000000000..6d90dc68d2 --- /dev/null +++ b/palindromic-substrings/parkhojeong.py @@ -0,0 +1,15 @@ +class Solution: + def countSubstrings(self, s: str) -> int: + s_len = len(s) + success = set([(i, i + 1) for i in range(s_len)]) + + for r in range(s_len): + for l in range(0, r): + if r - l == 1 and s[l] == s[r]: + success.add((l, r + 1)) + continue + + if (l + 1, r) in success and s[l] == s[r]: + success.add((l, r + 1)) + + return len(success) From 987369ddf53e4b2f43d9b84255ce0c68c40c437d Mon Sep 17 00:00:00 2001 From: Hojeong Park Date: Sun, 16 Aug 2026 00:19:20 +0900 Subject: [PATCH 4/4] longest-repeating-character-replacement solution --- .../parkhojeong.py | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 longest-repeating-character-replacement/parkhojeong.py diff --git a/longest-repeating-character-replacement/parkhojeong.py b/longest-repeating-character-replacement/parkhojeong.py new file mode 100644 index 0000000000..5f858f1c42 --- /dev/null +++ b/longest-repeating-character-replacement/parkhojeong.py @@ -0,0 +1,25 @@ +class Solution: + def characterReplacement(self, s: str, k: int) -> int: + freq = [0] * 26 + max_len = 0 + + def idx(ch): + return ord(ch) - ord('A') + + left = 0 + for i in range(len(s)): + freq[idx(s[i])] += 1 + window_size = i - left + 1 + size = window_size - max(freq) + + while size > k: + freq[idx(s[left])] -= 1 + + left += 1 + window_size -= 1 + size = window_size - max(freq) + + max_len = max(max_len, window_size) + + return max_len +