0과 1의 쉼터

[백준 04388] 받아올림 [Java] 본문

PS/Baekjoon Online Judge

[백준 04388] 받아올림 [Java]

kimyoungrok 2023. 12. 3. 03:34
728x90

문제

어린이에게 여러자리 숫자의 덧셈을 가르칠 때는 오른쪽 자리부터 왼쪽으로 하나씩 계산하는 방법을 가르쳐준다. 이때, 받아올림이 발생하게 되며 아이들은 여기서 혼란에 빠진다.

받아올림이란 영어로는 carry라고 하며, 한 자리를 더했을 때, 두 자리라면, 1을 왼쪽 자리로 올려주는 것을 뜻한다.

두 수가 주어졌을 때, 이러한 받아올림이 몇 번 발생하는지 구하는 프로그램을 작성하시오.

입력

입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 10자리 이내의 양의 정수 또는 0이 주어진다. 입력의 마지막 줄에는 0 0이 있다.

출력

각 테스트 케이스에 대해서, 입력으로 주어진 두 수를 더할때 나오는 받아올림의 개수를 출력한다.


풀이

0이상, 10자리 이내의 두 양의 정수의 합에 대해 받아올림이 몇 번 발생하는지 계산하는 문제다.

받아올림은 두 수의 합( A + B >= 10 )이 10 이상일 때 발생하며, 이로 인해 왼쪽 수에 증가하는 수는 1을 넘지 못한다.

(9 + 9 = 18 이므로)

 

정수의 받아올림을 한번에 계산하는 것은 불가능하다.

따라서, 일의 자리에 대해서만 받아올림 발생 여부를 파악해야한다. ( A % 10 + B % 10 >= 10 )

 

두 수가 0이 될 때까지 10으로 나누며 일의 자리에서 받아올림( onCarry )이 발생하는지 계산해주자.

만약 받아올림이 발생하지 않았다면, 다음 수에는 받아올림 수를 더할 필요가 없다. 0으로 변경해주자.


소스코드

보기


출처 

 

4388번: 받아올림

어린이에게 여러자리 숫자의 덧셈을 가르칠 때는 오른쪽 자리부터 왼쪽으로 하나씩 계산하는 방법을 가르쳐준다. 이때, 받아올림이 발생하게 되며 아이들은 여기서 혼란에 빠진다. 받아올림이

www.acmicpc.net

728x90
Comments