https://school.programmers.co.kr/learn/courses/30/lessons/120885
이진수를 의미하는 두 개의 문자열 bin1과 bin2가 매개변수로 주어질 때, 두 이진수의 합을 return하도록 solution 함수를 완성해주세요.
bin1 bin2 result
"10" "11" "101"
"1001" "1111" "11000"
입출력 예 #1
10 + 11 = 101 이므로 "101" 을 return합니다.
입출력 예 #2
1001 + 1111 = 11000 이므로 "11000"을 return합니다.
function solution(bin1, bin2) {
var answer = '';
[bin1, bin2] = [bin1.length<bin2.length?bin1.split('').map(x=>parseInt(x)):bin2.split('').map(x=>parseInt(x))
,bin1.length>=bin2.length?bin1.split('').map(x=>parseInt(x)):bin2.split('').map(x=>parseInt(x))]
for(let i=bin1.length-1;i>=0;i--){
if(bin1[i]){
bin2[i+bin2.length-bin1.length] +=bin1[i];
console.log(i, bin2)
for(let j = bin2.length-1;j>=0;j--){
if(j!=0&&bin2[j]==2){
bin2[j-1]+=1;
bin2[j] = 0;
}
else if(j==0&&bin2[j]==2){
bin2.unshift(1);
bin2[1] = 0;
}
}
}
}
return bin2.join('');
}
자리수가 큰 수에다가 자리수가 작은 수를 더하기.
맨 뒷자리부터 1일 경우에 더해가면서 2가 나오면 앞 자리에 1을 더하고 해당 자리는 0
맨 앞자리에 2인 경우에 unshift(1)로 맨 앞에 1추가하고 원래 2가 있는 자리는 0
function solution(bin1, bin2) {
return (parseInt(bin1, 2) + parseInt(bin2, 2)).toString(2)
}
parseInt의 두 번째 매개변수는 몇 진수로 표현할 지 입력하는 곳,
2진수 정수로 바꿔서 더해버리기