From 0eb27b71060a38b72e2beac6d443a1a19cc1d3cb Mon Sep 17 00:00:00 2001 From: freemjstudio Date: Sat, 15 Aug 2026 15:01:52 +0900 Subject: [PATCH 1/2] reverse bits --- reverse-bits/freemjstudio.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 reverse-bits/freemjstudio.py diff --git a/reverse-bits/freemjstudio.py b/reverse-bits/freemjstudio.py new file mode 100644 index 0000000000..4ffa36a1f9 --- /dev/null +++ b/reverse-bits/freemjstudio.py @@ -0,0 +1,14 @@ +class Solution: + def reverseBits(self, n: int) -> int: + # 1. convert integer into binary + binary = bin(n)[2:] + + # 2. convert into 32bits + fill_zero = 32 - len(binary) + binary = "0" * fill_zero + binary + + # 3. reverse the binary + reversed_binary = binary[::-1] + + # 4. convert binary into integer + return int(reversed_binary,2) From 12f1559f586fd6ecbb36047f4369cf33c2278cbf Mon Sep 17 00:00:00 2001 From: freemjstudio Date: Mon, 17 Aug 2026 19:16:57 +0900 Subject: [PATCH 2/2] longest-repeating-character-replacement/freemjstudio.py --- .../freemjstudio.py | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 longest-repeating-character-replacement/freemjstudio.py diff --git a/longest-repeating-character-replacement/freemjstudio.py b/longest-repeating-character-replacement/freemjstudio.py new file mode 100644 index 0000000000..f3639b00e3 --- /dev/null +++ b/longest-repeating-character-replacement/freemjstudio.py @@ -0,0 +1,44 @@ +from collections import Counter + +# first solution -> O(N**2), time limit exceeded +class Solution: + def characterReplacement(self, s: str, k: int) -> int: + max_length = 0 + + # window : length of the substring + for window in range(1, len(s)+1): + for i in range(len(s) - window + 1): + substring = s[i:i+window] + + counter = Counter(substring) + max_count = max(counter.values()) + if window - max_count <= k: + max_length = max(max_length, window) + + return max_length + +# second solution +from collections import Counter + +class Solution: + def characterReplacement(self, s: str, k: int) -> int: + max_length = 0 + counter = Counter() + left = 0 + + for right in range(len(s)): + counter[s[right]] += 1 + max_count = max(counter.values()) + + window = right - left + 1 + # window 사이즈가 조건에 맞도록 줄이기 + while window - max_count > k: + counter[s[left]] -= 1 + left += 1 + max_count = max(counter.values()) + window = right - left + 1 # update the window size because left has been moved + + # 조건을 만족하는 window size 로 max length 를 갱신한다. + max_length = max(window, max_length) + + return max_length