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으로 변경해주자.
소스코드
출처
728x90
'PS > Baekjoon Online Judge' 카테고리의 다른 글
[백준 04458] 첫 글자를 대문자로 [Java] (0) | 2023.12.04 |
---|---|
[백준 04435] 중간계 전쟁 [Java] (0) | 2023.12.03 |
[백준 04084] Viva la Diferencia [Java] (1) | 2023.12.02 |
[백준 03554] Enigmatic Device [Java] (1) | 2023.12.01 |
[백준 03578] Holes [Java] (1) | 2023.12.01 |