JLOG
[Python] 코드업 3021 : 큰 수 덧셈 풀이 본문
https://codeup.kr/problem.php?id=3021
문제 설명
int는 32비트, long long 은 64비트라서 이 보다 더 큰 숫자는 저장할 수 없다.
int와 long long으로 저장할 수 있는 숫자보다 아주 큰 숫자의 덧셈을 하려고 한다.
계산 결과를 출력하시오.
입력
첫째줄, 둘째줄에 큰 수 a,b가 입력된다. (a, b는 100자리 이하의 정수)
출력
큰 수 덧셈의 결과를 출력한다.
풀이 코드
# 입력
a = list(map(int, list(input())))
b = list(map(int, list(input())))
# FOR TESTING
#a = 111
#b = 9999999
#a = list(map(int, list(str(a))))
#b = list(map(int, list(str(b))))
sum_result = []
flag = 0 # 자리수 올림 표시
# a를 항상 큰 수로 만들어주기
# b가 더 크면 a, b를 바꿔준다.
if len(a) < len(b) : #{
tmp = a
a = b
b = tmp
#}
# b의 자리수만큼 다 더해주기
for i in range(len(b)) : #{
n_sum = a.pop() + b.pop() + flag
if n_sum >= 10 : #{
sum_result.append(n_sum - 10)
flag = 1
#}
else : #{
sum_result.append(n_sum)
flag = 0
#}
#}
# 자리수 올림이 남았을 때 계속 더해주기
for i in range(len(a)) : #{
if flag == 1 : #{
n_sum = a.pop() + flag
#}
else :
flag = 0
break
if n_sum >= 10 : #{
sum_result.append(n_sum - 10)
flag = 1
#}
#}
#print(a)
#print(sum_result)
# 마지막 자리 수 올림이 남았을 때 새로운 자리 수 생성
if flag == 1 : sum_result.append(1)
# 숫자 자리 수에 맞게 reverse
sum_result.reverse()
# a의 남아 있는 높은 자리수와 결과를 합하기
a.extend(sum_result)
print("".join(list(map(str,a))))
'Algorithm > 알고리즘 풀이' 카테고리의 다른 글
[Python] 코드업 2632 : 계단 오르기1 풀이 (0) | 2020.09.03 |
---|---|
[Python] 코드업 3501 : RGB(small) 풀이 (1) | 2020.08.28 |
[Python] 코드업 2610 : 그림판 채우기 (0) | 2020.05.26 |
[Python] 코드업 #3130 : 소들의 헤어스타일 (0) | 2020.05.22 |
[Python] 코드업 #2605 : 캔디팡 풀이 (2) | 2020.05.19 |
Comments