diff --git a/reverse-bits/KwonNayeon.py b/reverse-bits/KwonNayeon.py new file mode 100644 index 000000000..838ff907d --- /dev/null +++ b/reverse-bits/KwonNayeon.py @@ -0,0 +1,24 @@ +""" +Constraints: + - The input must be a binary string of length 32 + +Time Complexity: O(1) + - 항상 고정된 32비트 문자열에 대해 연산하므로 상수 시간 + +Space Complexity: O(1) + - 32비트 고정 크기의 문자열 연산만 사용하므로 상수 공간 + +풀이 방법: + 1. format(n, '032b')를 사용해 입력받은 정수를 32비트 이진수 문자열로 변환함 + 2. 문자열 슬라이싱 [::-1]으로 비트를 뒤집음 + 3. int(reversed_binary, 2)로 뒤집은 이진수 문자열을 다시 정수로 변환함 +""" + +class Solution: + def reverseBits(self, n: int) -> int: + + binary = format(n, '032b') + + reversed_binary = binary[::-1] + + return int(reversed_binary, 2) diff --git a/two-sum/KwonNayeon.py b/two-sum/KwonNayeon.py index 209596b1a..969e83b72 100644 --- a/two-sum/KwonNayeon.py +++ b/two-sum/KwonNayeon.py @@ -5,13 +5,13 @@ - -10^9 <= target <= 10^9 - Only one valid answer exists. - Time Complexity: O(n²) +Time Complexity: O(n²) - 중첩 반복문을 사용하기 때문 - 첫 번째 반복문: n번 - 각각에 대해 두 번째 반복문: n-1, n-2, ... 1번 - 따라서 총 연산 횟수는 n * (n-1)/2로 O(n²) - Space Complexity: O(1) +Space Complexity: O(1) - 추가 공간을 사용하지 않음 - result 리스트는 항상 크기가 2로 고정 """ @@ -23,5 +23,3 @@ def twoSum(self, nums: List[int], target: int) -> List[int]: for j in range(i+1, len(nums)): if nums[j] == target - nums[i]: return [i, j] - -