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)