더보기
제한사항
입출력 예bin1bin2result
입출력 예 설명
문제 설명
이진수를 의미하는 두 개의 문자열 bin1과 bin2가 매개변수로 주어질 때, 두 이진수의 합을 return하도록 solution 함수를 완성해주세요.
제한사항
- return 값은 이진수를 의미하는 문자열입니다.
- 1 ≤ bin1, bin2의 길이 ≤ 10
- bin1과 bin2는 0과 1로만 이루어져 있습니다.
- bin1과 bin2는 "0"을 제외하고 0으로 시작하지 않습니다.
입출력 예bin1bin2result
"10" | "11" | "101" |
"1001" | "1111" | "11000" |
입출력 예 설명
입출력 예 #1
- 10 + 11 = 101 이므로 "101" 을 return합니다.
입출력 예 #2
- 1001 + 1111 = 11000 이므로 "11000"을 return합니다.
알고리즘 구현을 위해서 2가지 함수를 만들어 주었다.
1. 2진수를 10진수로 바꿔주는 binToTen()
2. 10진수를 2진수로 바꿔주는 tenToBin()
이 때 주의해야 할 점은, 두 경우 모두 input 값이 0인 경우 예외 처리를 해줘야 한다는 것이다.
function solution(bin1, bin2) {
let ten1 = binToTen(bin1);
let ten2 = binToTen(bin2);
let ten = ten1 + ten2;
let answer = tenToBin(ten).split('').reverse().join('');
return answer;
}
function binToTen(n){
let ten = 0;
if(n === '0'){
ten = 0;
} else {
n = n.split('').reverse();
for(let i=0; i<n.length; i++){
ten = ten + (2**i)*parseInt(n[i]);
}
}
return ten;
}
function tenToBin(n){
let bin = '';
if(n === 0){
bin = '0';
} else {
let share = n;
while(share >= 1){
let remainder = share%2;
bin += remainder;
share = Math.floor(share/2);
}
}
return bin;
}
10진수를 2진수로 바꾸는 방법은 까먹어서... (이거 초등학교 때 배우던가? 암튼) 검색해봤다. 아래 링크를 참고했다.
2진수 변환기, 정수및 소수 10진수↔2진수 변환 | OurCalc
10진수를 2진수로 또는 2진수를 10진수로 직접 손으로 변환하려면 번거롭죠. 2진수 변환기를 이용하여 변환하려는 수를 입력하면 자동으로 변환된 값을 확인할 수 있습니다. 소수인 경우도 변환
ourcalc.com
'Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스 JS] 직사각형 넓이 구하기 / Math.max() Math.min() (0) | 2022.12.09 |
---|---|
[프로그래머스 JS] 숨어있는 숫자의 덧셈 (2) (0) | 2022.12.07 |
[프로그래머스 JS] 문자열 계산하기 (0) | 2022.12.06 |
[프로그래머스 JS] 소인수분해 (0) | 2022.11.22 |
[프로그래머스 JS] 구슬을 나누는 경우의 수 : BigInt() (0) | 2022.11.17 |