File tree Expand file tree Collapse file tree 1 file changed +31
-0
lines changed
Expand file tree Collapse file tree 1 file changed +31
-0
lines changed Original file line number Diff line number Diff line change 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+ } ;
You canโt perform that action at this time.
0 commit comments