-
Notifications
You must be signed in to change notification settings - Fork 125
/
Copy pathpmjuu.py
42 lines (32 loc) ยท 1.29 KB
/
pmjuu.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
class Solution:
def reverseBits(self, n: int) -> int:
# ์ด์ง์๋ก ๋ณํํ ํ '0b' ์ ๊ฑฐ
binary = bin(n)[2:]
# 32๋นํธ ๊ธธ์ด์ ๋ง๊ฒ ์์ชฝ์ 0์ ์ฑ์
binary = binary.zfill(32)
# ์ด์ง์๋ฅผ ๋ค์ง์
reversed_binary = binary[::-1]
# ๋ค์งํ ์ด์ง์๋ฅผ ์ ์๋ก ๋ณํํ์ฌ ๋ฐํ
return int(reversed_binary, 2)
# ์๊ฐ ๋ณต์ก๋: O(32)
# - bin(): O(32)
# - zfill(32): O(32)
# - ๋ฌธ์์ด ๋ค์ง๊ธฐ [::-1]: O(32)
# - int(๋ฌธ์์ด, 2): O(32)
# ์ดํฉ: O(32) (์์ ์๊ฐ์ผ๋ก ๊ฐ์ฃผ ๊ฐ๋ฅ)
# ๊ณต๊ฐ ๋ณต์ก๋: O(32)
# - ์ด์ง ๋ฌธ์์ด(binary)์ ๋ค์งํ ๋ฌธ์์ด(reversed_binary)์ ์ ์ฅํ๋ฏ๋ก O(32).
class Solution:
def reverseBits(self, n: int) -> int:
result = 0
for i in range(32):
# result๋ฅผ ์ผ์ชฝ์ผ๋ก 1๋นํธ ์ด๋ํ๊ณ n์ ๋ง์ง๋ง ๋นํธ๋ฅผ ์ถ๊ฐ
result = (result << 1) | n & 1
# n์ ์ค๋ฅธ์ชฝ์ผ๋ก 1๋นํธ ์ด๋
n >>= 1
return result
# ์๊ฐ ๋ณต์ก๋: O(32)
# - ๋ฐ๋ณต๋ฌธ์ด 32๋ฒ ์คํ๋๋ฉฐ ๊ฐ ์์
(๋นํธ ์ด๋ ๋ฐ OR ์ฐ์ฐ)์ O(1).
# ์ดํฉ: O(32) (์์ ์๊ฐ์ผ๋ก ๊ฐ์ฃผ ๊ฐ๋ฅ)
# ๊ณต๊ฐ ๋ณต์ก๋: O(1)
# - ์ถ๊ฐ๋ก ์ฌ์ฉํ๋ ๋ณ์ result์ n๋ง ์ ์ฅํ๋ฏ๋ก ์์ ๊ณต๊ฐ.