728x90
문제
어린이에게 여러자리 숫자의 덧셈을 가르칠 때는 오른쪽 자리부터 왼쪽으로 하나씩 계산하는 방법을 가르쳐준다.
이때, 받아올림이 발생하게 되며 아이들은 여기서 혼란에 빠진다.
받아올림이란 영어로는 carry라고 하며, 한 자리를 더했을 때, 두 자리라면, 1을 왼쪽 자리로 올려주는 것을 뜻한다.
두 수가 주어졌을 때, 이러한 받아올림이 몇 번 발생하는지 구하는 프로그램을 작성하시오.
https://www.acmicpc.net/problem/4388
입력
입력은 여러 개의 테스트 케이스로 이루어져 있다.
각 테스트 케이스는 10자리 이내의 양의 정수 또는 0이 주어진다. 입력의 마지막 줄에는 0 0이 있다.
출력
각 테스트 케이스에 대해서, 입력으로 주어진 두 수를 더할때 나오는 받아올림의 개수를 출력한다.
예제
# input
123 456
555 555
123 594
0 0
# output
0
3
1
문제 풀이
while True:
A, B = input().split()
if A == B == '0':
break
if len(A) > len(B):
B = (len(A)-len(B))*'0' + B
else:
A = (len(B)-len(A))*'0' + A
A = list(map(int, A))
B = list(map(int, B))
ans = 0
for i in range(-1, -len(A), -1):
if A[i] + B[i] >= 10:
ans += 1
A[i-1] += 1
if A[0] + B[0] >= 10:
ans += 1
print(ans)
파이썬을 독학하시는 분들에게 도움이 되길 바라며,
혹 더 좋은 방법이 있거나 오류가 있다면 편하게 말씀 부탁드립니다.
728x90