코딩테스트(JavaScript) 프로그래머스 : 이진수 더하기

Parkboss·2023년 6월 6일
0

코딩테스트

목록 보기
19/19

✅문제

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

❕ 제한사항

  • return 값은 이진수를 의미하는 문자열입니다.
  • 1 ≤ bin1, bin2의 길이 ≤ 10
  • bin1과 bin2는 0과 1로만 이루어져 있습니다.
  • bin1과 bin2는 "0"을 제외하고 0으로 시작하지 않습니다.

📢 입출력 예제

1. ParseInt()

  • 나는 parseInt를 내림할때 몇번 사용해봤다.
c = Math.floor( "-1.34" ); // -2
d = Math.floor( "-5.69" ); // -6

c2 = parseInt( "-1.34" ); // -1
d2 = parseInt( "-5.69" ); // -5

문자열 인자를 파싱하여 특정 진수(수의 진법 체계에서 기준이 되는 값)의 정수로 반환이 된다. 라는것을 알고 있었는가????

예전에 한번 읽어본 적이 있었는데 ...이게 이렇게 쓰일줄은 몰랐다

const str = "10";
console.log(parseInt(str)); //10 (str을 정수로)
console.log(parseInt(str, 2)); //2 (2진수를 10진수로)

const str2 = "11";
console.log(parseInt(str2)); //11 (str을 정수로)
console.log(parseInt(str2, 2)); //3 (2진수를 10진수로)

여기서 잠깐!

이진수란?

이진법에서는 0과 1로 모든 수를 표현한다.
컴퓨터 상에서는 각각의 자리를 비트라고 부르며,각각의 비트는 켜져('1')있거나 꺼져('0')있는 두 가지 상태로 표시된다.
바이트는 이러한 비트가 8개가 모인 것이다.
0101 0101 이런식으로 표현한 것이 바이트이다.
0000 0000 부터 1111 1111까지 표현할 수 있으며 1byte = 8bit라고 표현할 수 있다.

2. toString()

  • 이것도 코테 풀면서 굉장히 많으썼던 문자열로 반환할때 자주 사용했다.
num = 29183; 
let numArr = num.toString().split("");
console.log(numArr); // ['2','9','1','8','3']

숫자의 경우 선택적으로 기수(2~36)을 매개변수로 취하며, 이를 통해 10진수를 특정 진수로 변환한 값 반환

const num = 10;
console.log(num.toString()); //"10" (num을 문자열로)
console.log(num.toString(2)); //"1010" (num을 2진수로)

const num2 = 15;
console.log(num2.toString()); //"15" (num2을 문자열로)
console.log(num2.toString(2)); //"1111" (num2진수로)

결론은!

2진수 -> 10진수 : parseInt사용
10진수 -> 2진수 : toString사용

💻 다른 사람 풀이

function solution(bin1, bin2) {
   const a = parseInt(bin1, 2)
   const b = parseInt(bin2, 2)
   // 2진수인 bin1,bin2 매개변수 친구들이 
   // 10진수로 바꾸고 서로 더하면 아래 콘솔로그에 5라고 찍힌다.
   console.log(a+b) 
  // 10진수인 5라는 값을 다시 2진수로 바꿔주면 
  // result 값이 101인 2진수로 바꿔서 출력이 된다.
   return (a+b).toString(2)
}

참 신기하도다

profile
ur gonna figure it out. just like always have.

0개의 댓글