https://school.programmers.co.kr/learn/courses/30/lessons/120885
function solution(bin1, bin2) {
bin1 = "0".repeat(10 - bin1.length).concat(bin1);
bin2 = "0".repeat(10 - bin2.length).concat(bin2);
const result = Array(11).fill(0);
for (let i = 9; i >= 0; i--) {
result[i + 1] += (+bin1[i]) + (+bin2[i]);
if (result[i + 1] >= 2) {
result[i + 1] -= 2;
result[i] += 1;
}
}
return String(+result.join(""));
}
✔ bin1과 bin2의 최대 길이는 10 -> 계산의 편의를 위해 repeat()으로 0의 개수를 채워준다.
✔ bin1 + bin2를 의미하는 result 배열의 최대 길이는 11
✔ 문자열의 가장 끝부분부터 계산 -> 합이 2보다 크면 해당 자리수를 0으로 만들고 상위 자리수에 1을 더해줌
function solution(bin1, bin2) {
return (parseInt(bin1, 2) + parseInt(bin2, 2)).toString(2)
}
✔ 사실 위에서 했던 풀이는 toString의 인수로 숫자, 즉 2가 들어갈 때 10진수 숫자를 2진수의 문자열로 바꿔서 출력할 수 있다는 것을 까먹었기 때문에 일일이 계산을 한 것이었고... 이 방법이 가장 Simple/Best이지 않을까 생각한다.