Skip to content

Commit f83b231

Browse files
Solve : Sum of Two Integers
1 parent 1392d95 commit f83b231

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# recheck needs to be done
2+
3+
class Solution:
4+
def getSum(self, a, b):
5+
MASK = 0xFFFFFFFF # 32๋น„ํŠธ ์ •์ˆ˜๋ฅผ ํ‰๋‚ด ๋‚ด๊ธฐ ์œ„ํ•œ ๋งˆ์Šคํฌ (์‹ญ์ง„์ˆ˜๋กœ๋Š” 4294967295)
6+
MAX_INT = 0x7FFFFFFF # 32๋น„ํŠธ์—์„œ์˜ ์–‘์ˆ˜ ์ตœ๋Œ“๊ฐ’ (2147483647)
7+
8+
while b != 0:
9+
# a ^ b: ์ž๋ฆฌ์˜ฌ๋ฆผ(carry) ์—†์ด ๋”ํ•œ ๊ฐ’
10+
# a & b: ๊ฐ™์€ ์ž๋ฆฌ์— 1์ด ์žˆ์œผ๋ฉด ์ž๋ฆฌ์˜ฌ๋ฆผ์ด ์ƒ๊ธด๋‹ค๋Š” ์˜๋ฏธ
11+
# (a & b) << 1: ์ž๋ฆฌ์˜ฌ๋ฆผ์„ ์™ผ์ชฝ์œผ๋กœ ์ด๋™ํ•˜์—ฌ ์‹ค์ œ ์˜ฌ๋ฆผ ์—ฐ์‚ฐ ์œ„์น˜๋กœ ๋งž์ถค
12+
a, b = (a ^ b) & MASK, ((a & b) << 1) & MASK
13+
14+
# ์ตœ์ข…์ ์œผ๋กœ a์— ์ •๋‹ต์ด ๋“ค์–ด๊ฐ
15+
# ๊ทธ๋Ÿฐ๋ฐ 32๋น„ํŠธ ๋ถ€ํ˜ธ์žˆ๋Š” ์ •์ˆ˜์—์„œ๋Š” ์–‘์ˆ˜ ์ตœ๋Œ€๊ฐ’์ด MAX_INT
16+
# a > MAX_INT๋ผ๋ฉด ์Œ์ˆ˜๋ผ๋Š” ๋œป์ด๋ฏ€๋กœ, ๋ณด์ˆ˜ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์คŒ
17+
return a if a <= MAX_INT else ~(a ^ MASK)
18+

0 commit comments

Comments
ย (0)