728x90
https://www.acmicpc.net/problem/1110
1110번: 더하기 사이클
0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음,
www.acmicpc.net
문제 분석
입력한 수의 각 자리수를 더한 뒤(10이 넘을 경우 일의 자리를 구함) 입력한 수의 일의 자리 수와 결합해 두 자리 수로 만든다.
이 방법을 반복하여 원래 입력한 수로 다시 돌아왔을 경우 과정을 몇 번 반복하는지 횟수를 출력한다.
코드 진행 방향
입력받은 수 a를 b에 저장한 뒤, b를 10으로 나눈 나머지를 temp에 저장하고 result는 각 자리수를 더한 값을 저장한다.
다른 변수 c에 (temp*10) + (result%10)를 저장한다.
b를 c로 바꾸어준 뒤 count를 늘려가면서 원래 입력받은 a와 c를 비교해 같아지면 반복문을 종료하고 count 값을 출력한다.
코드
더보기
#include <stdio.h>
int main(){
int a, temp, result, b, c;
int count = 0;
scanf("%d", &a);
b = a;
do{
temp = b%10;
result = (b/10) + (b%10);
c = (temp*10) + (result%10);
b = c;
count++;
}while(a != c);
printf("%d", count);
}
728x90
'알고리즘 > 백준' 카테고리의 다른 글
[백준/C] 10818번: 최소, 최대 (0) | 2022.06.20 |
---|---|
[백준/C] 11021번: A+B - 7 (0) | 2022.06.20 |
[백준/C] 10952번: A+B - 5 (0) | 2022.06.20 |
[백준/C] 2884번: 알람 시계 (0) | 2022.06.14 |
[백준/C] 2588번: 곱셈 (0) | 2022.06.14 |