이진수를 의미하는 두 개의 문자열 bin1과 bin2가 매개변수로 주어질 때, 두 이진수의 합을 return하도록 solution 함수를 완성해주세요.
제한사항
return 값은 이진수를 의미하는 문자열입니다.
1 ≤ bin1, bin2의 길이 ≤ 10
bin1과 bin2는 0과 1로만 이루어져 있습니다.
bin1과 bin2는 "0"을 제외하고 0으로 시작하지 않습니다.
입출력 예
bin1 bin2 result
"10" "11" "101"
"1001" "1111" "11000"
def solution(bin1, bin2) :
# 뒤에서 부터 해야 차례차례 더하기 가능
bin1, bin2 = bin1[::-1], bin2[::-1]
# 인덱스, 이진수에서 1+1 이면 앞수가 1이 추가되기에 남는거 처리
i, carry = 0, 0
output = ''
# carry가 존재하면 다음자리수 1증가
while i < len(bin1) or i < len(bin2) or carry :
# bin[i]의 값이 있으면 반환 아니면 '0' 더했을때 어차피 없을거니까
op1 = bin1[i] if i < len(bin1) else '0'
op2 = bin2[i] if i < len(bin2) else '0'
result = int(op1) + int(op2) + carry
output += str(result % 2)
carry = result // 2
i += 1
# 다시 뒤집기
return output[::-1]
bin()함수를 이용한 풀이
def solution(bin1, bin2) :
a = int(bin1,2)
b = int(bin2,2)
return bin(a+b)[2:]