Skip to content

Commit bb5593f

Browse files
committed
sum-of-two-integers sol (js)
1 parent d087c80 commit bb5593f

File tree

1 file changed

+40
-0
lines changed

1 file changed

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

0 commit comments

Comments
ย (0)