덧셈, 뺄셈 연산자 없이 문자열 덧셈, 뺄셈 하기

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

댓글