Leetcode [Easy] 67 - Add Binary
LeetCode 67
Add Binary
문제
Given two binary strings, return their sum (also a binary string).
The input strings are both non-empty and contains only characters 1 or 0.
Example 1:
Input: a = "11", b = "1"
Output: "100"
Example 2:
Input: a = "1010", b = "1011"
Output: "10101"
Constraints:
Each string consists only of '0' or '1' characters.
1 <= a.length, b.length <= 10^4
Each string is either "0" or doesn't contain any leading zero.
나의 코드
var addBinary = function (a, b) {
const answer = [];
const _a = a.split("").reverse();
const _b = b.split("").reverse();
const longer = Math.max(_a.length, _b.length);
let carrying = 0;
// console.log(_a, _b)
for (let i = 0; i < longer; i++) {
const numA = _a[i] === undefined ? 0 : parseInt(_a[i], 2);
const numB = _b[i] === undefined ? 0 : parseInt(_b[i], 2);
const sum = numA + numB + carrying;
if (sum > 1) carrying = 1;
else carrying = 0;
// console.log(numA, numB, sum);
answer.push((sum % 2).toString(2));
}
if (carrying === 1) answer.push("1");
return answer.reverse().join("");
};
참고 코드
/**
* @param {string} a
* @param {string} b
* @return {string}
*/
var addBinary = function (a, b) {
const bigA = BigInt(`0b${a}`);
const bigB = BigInt(`0b${b}`);
return (bigA + bigB).toString(2);
};
배운점
-
Numeric Literal 에 대해 알게 되었다. (MDN » )
Numeric Literal 은 JavaScript 의 Lexical Grammar 의 중 하나이다.
- 2진법 :
0b
또는0B
로 기입 - 8진법 :
0o
또는0O
로 기입 -
16진법 :
0x
또는0X
로 기입 - Numeric Literal 를 Template Literal 로 생성하는 법
const x = 111; const numericLiteral = `0b${x}`;
- 2진법 :
-
BigInt type 에 대해 알게 되었다. (MDN »)
BigInt는 Number 원시 값이 안정적으로 나타낼 수 있는 최대치인 253 - 1보다 큰 정수를 표현할 수 있는 내장 객체이다.
- 생성법
const theBiggestInt = 9007199254740991n; const alsoHuge = BigInt(9007199254740991); // ↪ 9007199254740991n const hugeString = BigInt("9007199254740991"); // ↪ 9007199254740991n const hugeHex = BigInt("0x1fffffffffffff"); // ↪ 9007199254740991n const hugeBin = BigInt( "0b11111111111111111111111111111111111111111111111111111" ); // ↪ 9007199254740991n
Subscribe via RSS