반응형
츄르사려고 코딩하는 코집사입니다.
1. [백준 알고리즘] 백준 4388번 받아올림 파이썬(Python)
1) 문제번호 : 4388번
2) 문제 출처
https://www.acmicpc.net/problem/4388
2. 문제
어린이에게 여러자리 숫자의 덧셈을 가르칠 때는 오른쪽 자리부터 왼쪽으로 하나씩 계산하는 방법을 가르쳐준다. 이때, 받아올림이 발생하게 되며 아이들은 여기서 혼란에 빠진다.
받아올림이란 영어로는 carry라고 하며, 한 자리를 더했을 때, 두 자리라면, 1을 왼쪽 자리로 올려주는 것을 뜻한다.
두 수가 주어졌을 때, 이러한 받아올림이 몇 번 발생하는지 구하는 프로그램을 작성하시오.
3. 제약사항
4. 입력
입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 10자리 이내의 양의 정수 또는 0이 주어진다. 입력의 마지막 줄에는 0 0이 있다.
5. 출력
각 테스트 케이스에 대해서, 입력으로 주어진 두 수를 더할때 나오는 받아올림의 개수를 출력한다.
6. 풀이
- 2개의 수에서 최대 자릿수를 탐색한다. 그래서, 그 차이 만큼 자릿수가 적은 수 앞에 0을 넣어서 자릿수를 똑같이 맞춰준다.
- 자릿수를 다 맞춰줬으면, 인덱스를 맨 뒤부터 계산을 하는데, carry 까지 같이 더해준다.
- 덧셈의 받아올림은 최대 1만 있기 때문에, 더한 값을 String으로 변환하여 그 길이에서 -1을 빼주면 된다.
7. 소스 코드
import sys
input = sys.stdin.readline
while True :
A, B = map(int, input().split())
if A == 0 and B == 0 : break
tA = str(A)
tB = str(B)
#최대 자릿수 탐색
tSize = max(len(tA), len(tB)) - min(len(tA), len(tB))
최대 자릿수만큼 반복해서 앞에 0 넣기
for _ in range(tSize) :
if len(tA) > len(tB) :
tB = '0' + tB
if len(tA) < len(tB) :
tA = '0' + tA
carry = 0
cnt = 0
for i in range(len(tA)-1, -1, -1) :
carry = len(str(int(tA[i]) + int(tB[i]) + carry)) - 1
if carry == 1 : cnt+= 1
print(cnt)
반응형
'알고리즘 > 백준 알고리즘' 카테고리의 다른 글
[백준 알고리즘] 백준 23794번 골뱅이 찍기 - 정사각형 파이썬(Python) (0) | 2022.01.09 |
---|---|
[백준 알고리즘] 백준 23972번 악마의 제안 파이썬(Python) (0) | 2022.01.09 |
[백준 알고리즘] 백준 14909번 양수 개수 세기 파이썬(Python) (0) | 2022.01.08 |
[백준 알고리즘] 백준 5523번 경기 결과 파이썬(Python) (0) | 2022.01.07 |
[백준 알고리즘] 백준 23825번 SASA 모형을 만들어보자 파이썬(Python) (0) | 2022.01.06 |
[백준 알고리즘] 백준 2721번 삼각수의 합 파이썬(Python) (0) | 2022.01.05 |
[백준 알고리즘] 백준 18766번 카드 바꿔치기 파이썬(Python) (0) | 2022.01.04 |
[백준 알고리즘] 백준 2738번 행렬 덧셈 파이썬(Python) (1) | 2022.01.04 |
최근댓글