덧셈, 뺄셈 연산자 없이 문자열 덧셈, 뺄셈 하기
Problem
- 유명한 문제로 숫자로 구성된 문자열 계산을 +, - 없이 하는 것이다.
- 물론 여기서 +, -을 안쓴다는 것은 int(문자열)+int(문자열) 이런 식으로 하지 말란 뜻이다.
Code
덧셈 함수
def add_string(a,b):
len_a = len(a)
len_b = len(b)
if len_a > len_b:
b = '0'*(len_a-len_b)+b
else:
a = '0'*(len_b-len_a)+a
result = ''
carry = 0
for x, y in zip(a[::-1], b[::-1]):
x_int = ord(x)-ord('0')
y_int = ord(y)-ord('0')
sum_int = x_int + y_int + carry
carry = sum_int//10
remain = sum_int%10
result = str(remain) + result
if carry != 0:
return str(carry) + result
return result
뺄셈 함수
def minus_string(a,b):
len_a = len(a)
len_b = len(b)
if len_a > len_b:
b = '0'*(len_a-len_b)+b
else:
a = '0'*(len_b-len_a)+a
result = ''
carry = 0
for x, y in zip(a[::-1], b[::-1]):
x_int = ord(x)-ord('0')
y_int = ord(y)-ord('0')
minus_int = x_int - y_int - carry
if minus_int < 0:
minus_int += 10
carry = 1
else:
carry = 0
result = str(minus_int) + result
if carry > 0:
new_a = str(carry) + '0'*len(result[1:])
new_b = result[1:]
print(new_a, new_b)
return str('-')+minus_string(new_a, new_b)[1:]
return result
댓글
댓글 쓰기