Skip to content

Commit b122b9d

Browse files
committed
solve 5
1 parent c3e5de1 commit b122b9d

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

โ€Žsum-of-two-integers/pmjuu.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
'''
2+
์‹œ๊ฐ„ ๋ณต์žก๋„: O(1)
3+
- ๋ง์…ˆ์€ ๋น„ํŠธ ์—ฐ์‚ฐ์„ ์ด์šฉํ•˜์—ฌ ์ˆ˜ํ–‰๋˜๋ฉฐ, ์ •์ˆ˜ ํฌ๊ธฐ๊ฐ€ ๊ณ ์ •๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์—ฐ์‚ฐ ํšŸ์ˆ˜๊ฐ€ ์ œํ•œ์ ์ž…๋‹ˆ๋‹ค.
4+
5+
๊ณต๊ฐ„ ๋ณต์žก๋„: O(1)
6+
- ์ถ”๊ฐ€์ ์ธ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฑฐ์˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
7+
'''
8+
9+
class Solution:
10+
def getSum(self, a: int, b: int) -> int:
11+
MASK = 0xFFFFFFFF # 32๋น„ํŠธ ์ •์ˆ˜ ๋งˆ์Šคํฌ
12+
MAX_INT = 0x7FFFFFFF # 32๋น„ํŠธ ์ •์ˆ˜์˜ ์ตœ๋Œ€๊ฐ’
13+
14+
while b:
15+
carry = (a & b) << 1 # ์ž๋ฆฌ ์˜ฌ๋ฆผ ๊ณ„์‚ฐ
16+
a = (a ^ b) & MASK # ๋ง์…ˆ ์ˆ˜ํ–‰
17+
b = carry & MASK # ์ž๋ฆฌ ์˜ฌ๋ฆผ๊ฐ’์„ ๋ฐ˜์˜ํ•˜์—ฌ ๋‹ค์Œ ์—ฐ์‚ฐ ์ง„ํ–‰
18+
19+
# ์Œ์ˆ˜ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด 32๋น„ํŠธ ์ดˆ๊ณผ ์‹œ ๋ณด์ •
20+
return a if a <= MAX_INT else ~(a ^ MASK)

0 commit comments

Comments
ย (0)