본문 바로가기
Research/problems

프로그래머스_lv0_이진수 더하기

by RIEM 2022. 11. 16.

3.이진수 더하기

이진수를 의미하는 두 개의 문자열 bin1과 bin2가 매개변수로 주어질 때, 두 이진수의 합을 return하도록 solution 함수를 완성해주세요.

 

제한사항

return 값은 이진수를 의미하는 문자열입니다.

1 ≤ bin1, bin2의 길이 ≤ 10

bin1과 bin2는 0과 1로만 이루어져 있습니다.

bin1과 bin2는 "0"을 제외하고 0으로 시작하지 않습니다.

 

1001

1111

2112

2121

2211

3111

 

/ 1. 10진수 -> 2진수

let 십진수 = 125;

console.log(`1. 10진수(${십진수}) -> 2진수(${십진수.toString(2)})`); // 1111101

 

// 2. 10진수 -> 8진수

console.log(`2. 10진수(${십진수}) -> 8진수(${십진수.toString(8)})`); // 175

 

// 3. 10진수 -> 16진수

console.log(`3. 10진수(${십진수}) -> 16진수(${십진수.toString(16)})`); // 7d

 

// 4. 2진수 -> 8진수

let 이진수 = "1111101";

console.log(`4. 2진수(${이진수}) -> 8진수(${parseInt(이진수, 2).toString(8)})`); // 175

 

// 5. 2진수 -> 10진수

console.log(`5. 2진수(${이진수}) -> 10진수(${parseInt(이진수, 2)})`); // 125



https://ithub.tistory.com/290

여기da에 따르면 내부 함수를 활용하면 쉽게 바꿀 수 있다고 한다. 

 

풀이

function solution(bin1, bin2) {

    const a = parseInt(bin1, 2);

    const b = parseInt(bin2, 2);

 

    return (a + b).toString(2);

}

 

console.log(solution('10', '11'))

 

인사이트

  • parseInt가 그저 string과 number 간 변환에만 이용되는 줄 알았는데, 이를 활용하면 2진수를 10진수로 바꿀 수 있다는 점이 흥미롭다. 
  • 게다가 toString에 arg를 2로 넣으면 2진수로 바꾼다는 점도 새롭다.

 

 

나와 다른 사람들도 대부분 이런 방식으로 풀이를 했다. 나는 메소드를 활용하여 문제를 풀기보다는 실제로 2진수를 풀이를 해보면 좋다는 생각이 들었다. 시간이 나면 메소드 없이 2진수를 10진수로 바꾸는 방법을 연구해봐야 겠다. 사람이 변환하는 것은 직관적으로 할 수 있는데, 이를 컴퓨터의 방식으로 풀이를 하려고 하니 바로 떠오르지 않는다.

 

댓글