문제
두 수를 더할 때, 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)
'BOJ' 카테고리의 다른 글
[BOJ/백준] 10804 - 카드 역배치 (Python) (0) | 2024.11.04 |
---|