File tree Expand file tree Collapse file tree 1 file changed +12
-14
lines changed Expand file tree Collapse file tree 1 file changed +12
-14
lines changed Original file line number Diff line number Diff line change 16
16
- ๊ทธ๋ฌ๋ฏ๋ก ๊ณ์ ์ผ์ชฝ์ผ๋ก ์ด๋ํ๋ค ๊ฒฐ๊ตญ ์ฌ๋ผ์ง
17
17
- ์บ๋ฆฌ๊ฐ 0์ด ๋๋ฉด ๋ฃจํ ์ข
๋ฃ
18
18
"""
19
- # Solution 1: ์ดํดํ๊ธฐ ์ฌ์ด ๋ฒ์
19
+ # Solution 1
20
20
class Solution :
21
21
def getSum (self , a : int , b : int ) -> int :
22
22
while b :
23
- # XOR: ์ด๋์ ์บ๋ฆฌ๊ฐ ๋ฐ์ํ๋์ง ํ์ธ
24
- current_sum = a ^ b
25
-
26
- # AND: ์บ๋ฆฌ๋ฅผ ๋ค์ ์๋ฆฌ๋ก ์ฌ๋ฆผ
27
- next_carry = (a & b ) << 1
28
-
29
- a = current_sum
30
- b = next_carry
23
+ a , b = a ^ b , (a & b ) << 1
31
24
32
25
return a
33
-
34
- # Solution 2: ์ต์ ํ ๋ฒ์
26
+
27
+ # Solution 2: ์์ ์ผ์ด์ค ์ฒ๋ฆฌ
35
28
class Solution :
36
29
def getSum (self , a : int , b : int ) -> int :
37
- while b :
38
- a , b = a ^ b , (a & b ) << 1
30
+ mask = 0xffffffff # 32๋นํธ ๋ง์คํน
39
31
40
- return a
32
+ while b & mask :
33
+ # ์บ๋ฆฌ ์๋ ๋ง์
+ 32๋นํธ ์ ํ, ์บ๋ฆฌ ๊ณ์ฐ + 32๋นํธ ์ ํ
34
+ a , b = (a ^ b ) & mask , ((a & b ) << 1 ) & mask
35
+
36
+ # a <= 0x7FFFFFFF: ์์์ผ ๋ ๊ทธ๋๋ก ๋ฐํ(0x7FFFFFFF = 32๋นํธ ์ต๋ ์์)
37
+ # a > 0x7FFFFFFF: ์์์ผ ๋ Python ์์๋ก ๋ณํ
38
+ return a if a <= 0x7FFFFFFF else a | (~ mask )
41
39
You canโt perform that action at this time.
0 commit comments