BOJ
[BOJ/백준] 4388 - 받아올림 (Python)
tjdms4327
2025. 5. 2. 13:59
문제
두 수를 더할 때, carry는 몇 번 발생하는가?
풀이
입력이 0 0 이면 종료한다.
두 수의 자리수가 다를 수도 있으므로 zfill로 작은 수의 앞자리에 0을 채워준다.
각 자리수를 더할 때 그 이전에서 carry가 발생했을 수도 있으므로 int(a[i])+int(b[i])+carry가 10보다 크거나 같을 때만 이번 자리수에서 carry가 발생한다. 이 경우에만 carry_count에 1을 더해준다.
이번 자리에서 carry가 발생하지 않으면 초기화해주어야 한다.
코드
while True:
a, b = input().split()
if a=='0' and b=='0': break
length=max(len(a), len(b))
a=a.zfill(length) ; b=b.zfill(length)
carry, carry_count=0,0
for i in range(length-1, -1, -1):
if (int(a[i])+int(b[i])+carry)>=10 : carry_count+=1 ; carry=1
else: carry=0
print(carry_count)