Skip to content

Commit 09a3777

Browse files
committed
Sum of Two Integers Solution
1 parent fb9bcbd commit 09a3777

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/*
2+
* ๋‘ ์ •์ˆ˜ a์™€ b๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, + ์™€ - ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋‘ ์ˆ˜์˜ ํ•ฉ ๊ตฌํ•˜๊ธฐ
3+
*
4+
* ์ ‘๊ทผ ๋ฐฉ๋ฒ•: ๋น„ํŠธ์—ฐ์‚ฐ / ALU ์—ฐ์‚ฐ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‘ ์ˆ˜์˜ ํ•ฉ์„ ๊ตฌํ•จ
5+
* 1. XOR ์—ฐ์‚ฐ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‘ ์ˆ˜์˜ ํ•ฉ์„ ๊ตฌํ•จ (์˜ฌ๋ฆผ์ˆ˜๋Š” ์ œ์™ธ)
6+
* 2. AND ์—ฐ์‚ฐ๊ณผ ์™ผ์ชฝ ์‹œํ”„ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜ฌ๋ฆผ์ˆ˜๋ฅผ ๊ตฌํ•จ
7+
* 3. ์œ„์˜ ๋‘ ๊ณผ์ •์„ ์˜ฌ๋ฆผ์ˆ˜๊ฐ€ 0์ด ๋  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต
8+
*
9+
* ์‹œ๊ฐ„๋ณต์žก๋„: O(log max(a,b)), ์ตœ๋Œ€ 32๋ฒˆ ๋ฐ˜๋ณต
10+
* ๊ณต๊ฐ„๋ณต์žก๋„: O(1)
11+
*/
12+
/**
13+
* @param {number} a
14+
* @param {number} b
15+
* @return {number}
16+
*/
17+
var getSum = function (a, b) {
18+
while (b !== 0) {
19+
// XOR: ์ž๋ฆฌ์˜ฌ๋ฆผ ์—†๋Š” ๋ง์…ˆ
20+
let sum = a ^ b;
21+
22+
// AND + ์‹œํ”„ํŠธ: ์ž๋ฆฌ์˜ฌ๋ฆผ ๊ณ„์‚ฐ
23+
let carry = (a & b) << 1;
24+
25+
// ๋‹ค์Œ ๋ฐ˜๋ณต์„ ์œ„ํ•ด ๊ฐ’ ์—…๋ฐ์ดํŠธ
26+
a = sum;
27+
b = carry;
28+
}
29+
30+
return a;
31+
};

0 commit comments

Comments
ย (0)