본문 바로가기
Algorithm/Programmers

[프로그래머스 JS] 이진수 더하기 (10진수 2진수 변환)

by 그랴 2022. 12. 7.
더보기

문제 설명

이진수를 의미하는 두 개의 문자열 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