본문 바로가기
Problem Solving/프로그래머스

[프로그래머스 | 파이썬 / 자바스크립트] 이진수 더하기(코딩테스트 입문/ level 0)

by 청량리 물냉면 2023. 2. 28.
반응형
문제

https://school.programmers.co.kr/learn/courses/30/lessons/120885 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

🐍파이썬
def solution(bin1, bin2):
    return bin(int(bin1, 2)+ int(bin2, 2))[2:]

1️⃣ int 함수 두 번째 인자에 2를 넣어 bin1, 2를 이진수로 인식시킨 후 덧셈을 수행한다.

2️⃣ 덧셈 수행 결과를 bin()으로 출력하고, 앞의 "0b"를 삭제하기 위해 슬라이싱을 진행했다.

 

💡  int(value, base) 

base에 진법(범위: 2 ~ 36)을 입력할 수 있다. 입력하지 않을 경우 기본으로 10이 넘어간다.

 

 

다른 풀이 방법

def solution(bin1, bin2):
    answer = 0
    bin1_size = len(bin1)
    bin2_size = len(bin2)
    sum = 0
    for i in bin1:
        sum += int(i) * (2 ** (bin1_size - 1))	#이진수 각 자리수의 합을 구한다. 
        bin1_size -= 1
    for i in bin2:
        sum += int(i) * (2 ** (bin2_size - 1))	#ex)101 -> 1*(2**2) + 0*(2**1) + 1*(2**0)
        bin2_size -= 1
    answer = str(bin(sum))[2:]
    return answer

 

 

🐥자바스크립트
function solution(bin1, bin2) {
    return (parseInt(bin1, 2) + parseInt(bin2, 2)).toString(2);
}

1️⃣ parseInt 함수 두 번째 인자에 2를 넣어 bin1, 2를 이진수로 인식시킨 후 덧셈을 수행한다.

2️⃣ 덧셈 수행 결과를 toString(2)를 통해 이진수로 출력했다.

 

💡 parseInt(string, radix)

- radix (Optional)

string의 진수를 나타내는 2부터 36까지의 정수. 기본 값은 10이 아님에 주의. Number 자료형이 아닌 경우 Number로 변환

 

💡 toString(radix)

숫자 및 BigInts의 경우 toString()은 선택적으로 기수(radix)를 매개변수로 취한다. 기수의 값은 최소 2부터 36까지이다.

 

 

 

다른 풀이 방법

function solution(bin1, bin2) {
  let temp = Number(bin1) + Number(bin2); 	//십진수 계산
  temp = [...temp.toString()].reverse().map((v) => +v);	//계산 값을 뒤집기

  for (let i = temp.length; i < 11; i++) {	//배열 길이가 11이 되도록 0을 push
    temp.push(0);
  }

  for (let i = 0; i < temp.length; i++) {
    if (temp[i] === 2) {	//값이 2일 때 반올림
      temp[i] = 0;
      temp[i + 1]++;
    } else if (temp[i] === 3) {	//값이 3일 때 반올림
      temp[i] = 1;
      temp[i + 1]++;
    }
  }
  return Number(temp.reverse().join("")).toString();	//값을 원래대로 뒤집고 문자열로 변환하여 리턴
}

 

 

 

반응형