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์์ด์ด์, ์๊ณ ๋ฆฌ์ฆ ํ์ด๋, ๋ธ๋ก๊ทธ ๊ธ ์ ๋ก๋๋ ์ด์ ๋ค์ ์ฌ๊ฐํด์ผ๊ฒ ๋ค๋ ์๊ฐ์ด ๋ ๋ค... ๐ฅ ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์ ๊ฐ์ธ ๊ณต๋ถ๋ฅผ ์ํํ ํ์ง ์๊ธฐ๊ฐ ๋ฌด์ฒ ์ด๋ ต๋ค ํํ...
'๐ฉโ๐ป > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript] ํจ์ ์์ฑ์์ ํด๋์ค์ ์ฐจ์ด (0) | 2021.05.09 |
---|---|
[JavaScript] ์ฝ์คํ, ์ฝ๋ฐฑํ, ์ด๋ฒคํธ ๋ฃจํ์ ๋์ ์๋ฆฌ๋ฅผ ํตํ ๋น๋๊ธฐ ํจ์์ ์คํ ๊ณผ์ (0) | 2021.05.09 |
[JavaScript] ์๊ฒฉ ๋ชจ๋ (use strict) (0) | 2021.05.05 |
[JavaScript] call, apply and bind (0) | 2021.05.05 |
[JavaScript] ์ ๊ท์ ์ด์ฉํ String Date ๊ฐ๊ณตํ๊ธฐ (0) | 2021.03.31 |