728x90
문제 설명
이진수를 의미하는 두 개의 문자열 bin1과 bin2가 매개변수로 주어질 때, 두 이진수의 합을 return하도록 solution 함수를 완성해주세요.
제한사항
return 값은 이진수를 의미하는 문자열입니다.
1 ≤ bin1, bin2의 길이 ≤ 10
bin1과 bin2는 0과 1로만 이루어져 있습니다.
bin1과 bin2는 "0"을 제외하고 0으로 시작하지 않습니다.
입출력 예
이번문제는 꽤 다양한 방법으로 풀었고 파이썬 문법에 현타가 왔다..
def solution(bin1, bin2):
answer = ''
carry = 0
bin1 = bin1.zfill(max(len(bin1), len(bin2)))
bin2 = bin2.zfill(max(len(bin1), len(bin2)))
for i in range(len(bin1) - 1, -1, -1):
sum = int(bin1[i]) + int(bin2[i]) + carry
carry = sum // 2
answer = str(sum % 2) + answer
if carry:
answer = "1" + answer
return answer
else:
return answer
def solution(bin1, bin2):
# 테케 5번에서 시간초과로 풀이 실패
answer = ''
Decimal = 0
for i, j in enumerate(range(len(bin1)-1, -1, -1)):
Decimal += int(bin1[j]) * 2**i
for i, j in enumerate(range(len(bin2)-1, -1, -1)):
Decimal += int(bin2[j]) * 2**i
while True:
if Decimal == 1:
answer += str(Decimal)
break
if Decimal % 2 == 0:
answer += str(Decimal % 2)
Decimal = Decimal // 2
elif Decimal % 2 == 1:
answer += str(Decimal % 2)
Decimal = Decimal // 2
su = list(reversed(answer))
return "".join(su)
def solution(bin1, bin2):
answer = bin(int(bin1,2) + int(bin2,2))[2:]
return answer
728x90