알고리즘

[백준] 10757번 :큰 수 A+B - Python 파이썬

헌치 2021. 8. 23. 21:51

[백준] 10757번 :큰 수 A+B - Python 파이썬

 

알고리즘 분류:

링크: https://www.acmicpc.net/problem/10757

 

10757번: 큰 수 A+B

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

www.acmicpc.net


문제

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 A와 B가 주어진다. (0 < A,B < 1010000)

출력

첫째 줄에 A+B를 출력한다.


제출한 답

import sys
a,b = sys.stdin.readline().rstrip().split()
print(int(a)+int(b))

파이썬의 경우 int의 범위에 상관없이 큰 수 출력이 가능하지만

c언어 등 다른 언어에서는 범위 문제로 일반적인 덧셈 기능을 활용할 수 없다.

 

이런 부분을 생각해서 정수의 범위에 관계없이 덧셈이 가능한 답을 제출했다.

import sys
a,b = sys.stdin.readline().rstrip().split()

#1)두 수의 자릿수 맞추기
if len(a) < len(b):
  a = (len(b)-len(a))*"0" + a
elif len(a) > len(b):
  b = (len(a)-len(b))*"0" + b

length = len(a)
r = [0 for __ in range(length)]

for i in range(length-1,-1,-1):
  sum = r[i] + int(a[i]) + int(b[i])
  if sum < 10:#자릿수 안 오를 때
    #2) r 배열 안에 각 자릿수 별로 덧셈하기
    r[i] = sum
  else:#자릿수 오를 때
    r[i] = sum - 10
    # 3) 자리 수 체인지
    if i != 0:#맨 끝 수 아니면
      r[i-1] += 1
    else: # 끝 수
      r = [1] + r

print("".join(map(str,r)))

#1)두 수의 자릿수 맞추기

#2) r 배열 안에 각 자릿수 별로 덧셈하기

#3) 자리 수 체인지