From ca310996860e74c0052fcbe1f68464bc04f2be85 Mon Sep 17 00:00:00 2001 From: gyeo-ri Date: Sat, 25 Apr 2026 10:31:57 +0900 Subject: [PATCH 1/5] =?UTF-8?q?feat:=20=EA=B8=B0=EB=B3=B8=EC=A0=81?= =?UTF-8?q?=EC=9D=B8=20=ED=92=80=EC=9D=B4=EB=B2=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- reverse-bits/gyeo-ri.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 reverse-bits/gyeo-ri.py diff --git a/reverse-bits/gyeo-ri.py b/reverse-bits/gyeo-ri.py new file mode 100644 index 000000000..1d7a17399 --- /dev/null +++ b/reverse-bits/gyeo-ri.py @@ -0,0 +1,26 @@ +class Solution: + def reverseBits(self, n: int) -> int: + n_binary_str = bin(n).replace("0b", "").zfill(32) + n_reversed_binary = "".join(reversed(n_binary_str)) + return int(n_reversed_binary, 2) + + +if __name__ == "__main__": + test_cases = [ + (43261596, 964176192), + (2147483644, 1073741822), + (0, 0), + (2, 1073741824), + ] + + solution = Solution() + + for idx, (inp, expected) in enumerate(test_cases, start=1): + + result = solution.reverseBits(inp) + + assert ( + result == expected + ), f"Test Case {idx} Failed: Expected {expected}, Got {result}" + + print("All test cases passed.") From ee78a85ad63a9650ca29cc667c4443ad871433ec Mon Sep 17 00:00:00 2001 From: gyeo-ri Date: Sat, 25 Apr 2026 10:33:16 +0900 Subject: [PATCH 2/5] =?UTF-8?q?fix:=20=EC=A4=84=EB=B0=94=EA=BF=88=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- reverse-bits/gyeo-ri.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/reverse-bits/gyeo-ri.py b/reverse-bits/gyeo-ri.py index 1d7a17399..10e6d7e28 100644 --- a/reverse-bits/gyeo-ri.py +++ b/reverse-bits/gyeo-ri.py @@ -12,15 +12,11 @@ def reverseBits(self, n: int) -> int: (0, 0), (2, 1073741824), ] - solution = Solution() for idx, (inp, expected) in enumerate(test_cases, start=1): - result = solution.reverseBits(inp) - assert ( result == expected ), f"Test Case {idx} Failed: Expected {expected}, Got {result}" - print("All test cases passed.") From fbfa650b925f74da8bcb84163e3a2b0ee40ec659 Mon Sep 17 00:00:00 2001 From: gyeo-ri Date: Sat, 25 Apr 2026 22:52:21 +0900 Subject: [PATCH 3/5] =?UTF-8?q?feat:=20=EB=B9=84=ED=8A=B8=20=EC=97=B0?= =?UTF-8?q?=EC=82=B0=20=EA=B8=B0=EB=B0=98=EC=9D=98=20=EC=BD=94=EB=93=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- reverse-bits/gyeo-ri.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/reverse-bits/gyeo-ri.py b/reverse-bits/gyeo-ri.py index 10e6d7e28..5b1d612fe 100644 --- a/reverse-bits/gyeo-ri.py +++ b/reverse-bits/gyeo-ri.py @@ -1,8 +1,10 @@ class Solution: def reverseBits(self, n: int) -> int: - n_binary_str = bin(n).replace("0b", "").zfill(32) - n_reversed_binary = "".join(reversed(n_binary_str)) - return int(n_reversed_binary, 2) + result = 0 + for _ in range(32): + result = (result << 1) | (n & 1) + n >>= 1 + return result if __name__ == "__main__": From 899a78f7b3c20618f05abc90256eef3ca7b256d4 Mon Sep 17 00:00:00 2001 From: gyeo-ri Date: Sat, 25 Apr 2026 22:58:28 +0900 Subject: [PATCH 4/5] =?UTF-8?q?fix:=20=EB=B9=84=ED=8A=B8=20=EC=97=B0?= =?UTF-8?q?=EC=82=B0=EC=9D=98=20=EB=8F=99=EC=9E=91=20=EC=88=9C=EC=84=9C=20?= =?UTF-8?q?=EC=9E=91=EC=84=B1=3D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- reverse-bits/gyeo-ri.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/reverse-bits/gyeo-ri.py b/reverse-bits/gyeo-ri.py index 5b1d612fe..4cd7482fc 100644 --- a/reverse-bits/gyeo-ri.py +++ b/reverse-bits/gyeo-ri.py @@ -2,7 +2,11 @@ class Solution: def reverseBits(self, n: int) -> int: result = 0 for _ in range(32): + # 1. n의 마지막 자리를 뽑아서(n & 1) + # 2. result의 마지막 자리를 0으로 만든 다음(result << 1 -> 마지막 자리가 0) + # 3. 그 마지막 자리에 n의 마지막 자리를 붙임(0과의 OR 연산) result = (result << 1) | (n & 1) + # n의 자리를 이동 n >>= 1 return result From ceaeb0297afaff78c02a251bc67919b99b15033d Mon Sep 17 00:00:00 2001 From: gyeo-ri Date: Sat, 25 Apr 2026 23:05:45 +0900 Subject: [PATCH 5/5] =?UTF-8?q?fix:=20=ED=92=80=EC=9D=B4=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- reverse-bits/gyeo-ri.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/reverse-bits/gyeo-ri.py b/reverse-bits/gyeo-ri.py index 4cd7482fc..9455674ce 100644 --- a/reverse-bits/gyeo-ri.py +++ b/reverse-bits/gyeo-ri.py @@ -1,3 +1,17 @@ +""" +[결과 요약] +# 시도한 로직 수: 2 + 1. 문자열을 뒤집어 새 객체를 만들기 O(1) / O(1) + - reversed() 또는 문자열 슬라이싱으로 풀 수 있음 + - 메모리를 많이 사용함 + 2. 비트 연산 기반의 코드 O(1) / O(1) + - 파이썬의 특성으로 인해 (1)에 비해 메모리가 크게 개선되지는 않음 + - 파이썬은 int가 ‘기변 길이’의 객체여서 연산마다 새로운 객체를 생성하기 때문 + - 문자열 생성/파싱 등의 오버헤드가 줄기 때문에 성능에서 약간의 이점이 있음(지금 문제에서 큰 차이 x) + +) C, C++ 등의 언어는 int가 고정 크기(primitive)이기 때문에 재할당이 줄어서 메모리 사용에 이점이 있음 +""" + + class Solution: def reverseBits(self, n: int) -> int: result = 0