LeetCode Add Binary (JavaScript)

2025. 11. 27. 14:27·코딩테스트/LeetCode

링크 : https://leetcode.com/problems/add-binary/description/

문제 설명

더보기

Given two binary strings a and b, return their sum as a binary string.

Example 1:

Input: a = "11", b = "1"
Output: "100"

Example 2:

Input: a = "1010", b = "1011"
Output: "10101"

Constraints:

  • 1 <= a.length, b.length <= 104
  • a and b consist only of '0' or '1' characters.
  • Each string does not contain leading zeros except for the zero itself.

문제 풀이

1. a, b뒤에서 부터 검사

2. aLen, bLen, carry(자릿수 올림)이 있다면 반복문 진행

  • aLen위치 값 + bLen위치 값 + carry의 sum을 구함 (단, 유요한 index일 경우에만 sum에 더하도록)
  • 2로 나눈 나머지를 자릿수 올림 값으로 지정
  • answer에 sum을 2로 나눈 나머지와 연결
/**
 * @param {string} a
 * @param {string} b
 * @return {string}
 */
var addBinary = function(a, b) {
    let aLen = a.length - 1;
    let bLen = b.length - 1;

    let carry = 0;
    let answer = '';
    while (aLen >= 0 || bLen >= 0 || carry) {
        let sum = carry;
        if (aLen >= 0) {
            sum += parseInt(a[aLen--]);
        }
        if (bLen >= 0) {
            sum += parseInt(b[bLen--]);
        }

        carry = Math.floor(sum / 2);
        answer = `${sum % 2}${answer}`;
    }

    return answer;
};

결론

a와 b의 length가 10^4이기 때문에 일반 적인 정수 덧셈으로는 해결이 불가능 (overflow 발생)

  • 2진수 -> 10진수 정수로 바꾸기 `parseInt(numString, 2)`
  • 10진수 -> 2진수 문자열로 바꾸기 `num.toString(2)`

따라서 문자열로 각 자릿수를 합하고 carry를 이용하여 문자열을 만들어나가는 형식으로 해결

'코딩테스트 > LeetCode' 카테고리의 다른 글

LeetCode Climbing Stairs (JavaScript)  (0) 2025.12.08
LeetCode Sqrt(x) (JavaScript)  (1) 2025.12.08
LeetCode Plus One (JavaScript)  (0) 2025.11.27
LeetCode Spiral Matrix (JavaScript)  (0) 2025.11.26
LeetCode Maximum Subarray (JavaScript), DP  (0) 2025.11.26
'코딩테스트/LeetCode' 카테고리의 다른 글
  • LeetCode Climbing Stairs (JavaScript)
  • LeetCode Sqrt(x) (JavaScript)
  • LeetCode Plus One (JavaScript)
  • LeetCode Spiral Matrix (JavaScript)
의현
의현
개발하는 하루
  • 의현
    UIHYEON
    의현
  • 링크

    • 김의현 포트폴리오
    • GitHub
    • LinkedIn
  • 전체
    오늘
    어제
    • 분류 전체보기 (215) N
      • 프론트엔드 (65) N
        • JavaScript (52) N
        • HTML (3)
        • React (7)
        • CSS (2)
        • CS (1)
      • 프로젝트 (19)
        • Portfolio 사이트 개발 (19)
      • 코딩테스트 (128) N
        • Binary Search (2)
        • bfs (Breadth-first s.. (4)
        • dfs (Deapth-first se.. (1)
        • Greedy (1)
        • Dynamic Programming (1)
        • two pointer (4)
        • 구현 (2)
        • LIS(Longest Increasi.. (0)
        • 문자열 (3)
        • 자료구조 (6)
        • 비트마스크 (2)
        • 수학 (2)
        • 프로그래머스 (61)
        • LeetCode (39) N
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
의현
LeetCode Add Binary (JavaScript)
상단으로

티스토리툴바