๐Ÿ‘ฉ‍๐Ÿ’ป/JavaScript

[leetCode] Add Binary

ํ•œ๋‚˜ 2021. 6. 27. 21:58

Add Binary

 

 

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

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

 

 

String ํƒ€์ž…์œผ๋กœ ์ฃผ์–ด์ง€๋Š” ์ด์ง„์ˆ˜๋ฅผ ๋”ํ•ด์„œ String ํ˜•์‹์œผ๋กœ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.

/**
 * @param {string} a
 * @param {string} b
 * @return {string}
 */

// First Try
var addBinary = function(a, b) {
    let carry = 0 
    const res = []

    const aLen = a.length;
    const bLen = b.length;

    for (let i = aLen - 1, j = bLen - 1; 0 <= i || 0; --i, --j) {
        let aBin = i >= 0 ? Number(a[i]) : 0;
        let bBin = j >= 0 ? Number(b[j]) : 0;

        res.push((aBin + bBin + carry) % 2);
        carry = aBin + bBin + carry > 1

    }
    if (carry) {
        res.push(1)
    }
    return res.reverse().join('')
};

์ฃผ์–ด์ง€๋Š” ์ˆ˜์˜ length๋ฅผ ๊ณ„์‚ฐํ•ด์„œ, ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ์ž๋ฆฟ์ˆ˜์˜ ์ˆซ์ž๋ฅผ ๋”ํ•˜๊ณ  ์˜ฌ๋ ค์•ผ ํ•  ๋•Œ(carry๊ฐ€ ์žˆ์„ ๋•Œ), 1์„ ๊ฒฐ๊ณผ ๊ฐ’์— ์ถ”๊ฐ€๋กœ ๋„ฃ์–ด์ค€๋‹ค.

 

push๋กœ ์Œ“์ด๋Š” ๋ฐ์ดํ„ฐ๋Š” ๋ณด์—ฌ์ฃผ์–ด์•ผ ํ•˜๋Š” ๋ฌธ์ž์—ด์˜ ๊ฐ’๊ณผ ์ •๋ ฌ์ด ๋ฐ˜๋Œ€์ด๋ฏ€๋กœ reverse() ํ•จ์ˆ˜๋ฅผ ์“ด๋‹ค.

 

๋‹จ, ์œ„ ํ’€์ด๋Š” ์–ผ๋งˆ๋‚˜ ๋ฐ˜๋ณตํ•  ๊ฒƒ์ธ์ง€ maximum ๊ฐ’ ์„ค์ •์„ ๋ฏธ์ฒ˜ ํ•ด์ฃผ์ง€ ์•Š์•„์„œ ํ•ญ์ƒ i ๋ฒˆ์งธ์—์„œ ๋ฉˆ์ถ”๋ฏ€๋กœ ํ‹€๋ฆฐ ๋‹ต์„ ๋‚ด๋†“๊ฒŒ ๋œ๋‹ค.

// second try
var addBinary = function(a, b) {
    let carry = 0 
    const res = []

    const aLen = a.length;
    const bLen = b.length;



    for (let i = aLen - 1, j = bLen - 1; 0 <= (i >= j ? i : j) || 0; --i, --j) {
        let aBin = i >= 0 ? Number(a[i]) : 0;
        let bBin = j >= 0 ? Number(b[j]) : 0;

        res.push((aBin + bBin + carry) % 2);
        carry = aBin + bBin + carry > 1

    }
    if (carry) {
        res.push(1)
    }
    return res.reverse().join('')
};

i์™€ j์˜ ๊ฐ’์„ ๋น„๊ตํ•ด ๋” ํฐ ์ˆ˜๋ฅผ ์–ป์–ด, ํ•ด๋‹น ์ˆ˜๋งŒํผ ๋ฐ˜๋ณตํ•˜๋„๋ก ๋ฐ”๊ฟ”์ฃผ์—ˆ๋‹ค.

 

๋ธ”๋กœ๊ทธ ๋งˆ์ง€๋ง‰ ๊ธ€์ด 5์›”์ด์–ด์„œ, ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ’€์ด๋„, ๋ธ”๋กœ๊ทธ ๊ธ€ ์—…๋กœ๋“œ๋„ ์ด์ œ ๋‹ค์‹œ ์žฌ๊ฐœํ•ด์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ ๋‹ค... ๐Ÿ˜ฅ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋ฉด์„œ ๊ฐœ์ธ ๊ณต๋ถ€๋ฅผ ์†Œํ™€ํžˆ ํ•˜์ง€ ์•Š๊ธฐ๊ฐ€ ๋ฌด์ฒ™ ์–ด๋ ต๋‹ค ํ‘ํ‘...