C언어/BAEKJOON
[백준] 1110. 더하기 사이클
너굴맨이해치움
2022. 7. 13. 22:50
: solved.ac - bronze 1
https://www.acmicpc.net/problem/1110
1110번: 더하기 사이클
0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음,
www.acmicpc.net
예제 입력 1
55
예제 출력 1
3
예제 입력 2
1
예제 출력 2
60
예제 입력 3
0
예제 출력 3
1
정답
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int n, num, a, b, sum;
int cycle = 0;
scanf("%d", &n);
num = n;
while (1) {
a = num / 10;
b = num % 10;
sum = a + b;
num = (b * 10) + (sum % 10);
cycle++;
if (num == n) break;
}
printf("%d", cycle);
return 0;
}
해설
: 문제에서 제시된 식만 구현할 수 있다면 간단한 문제이다.
- 처음 숫자를 변수 n에 받아 놓고, 별도 변수 num을 선언하여 n의 값을 복사한다.
- num의 십의 자리 숫자(num/10)을 a에, 일의 자리 숫자(num%10)을 b에 저장한다.
- a와 b를 더한 값을 sum이라는 별도 변수에 저장한다.
- b에 10을 곱해 10의 자리 수로 삼고, sum의 1의 자리 숫자를 1의 자리 수로 삼아 새로운 숫자를 만든다.
- 새 숫자를 num에 저장해 새로운 num을 만든다.
- 여기까지가 한 사이클이므로 cycle 변수를 1 증가시킨다.
- num이 처음 값인 n과 같아졌다면 반복문을 탈출한다.
- 이 과정을 탈출문의 조건이 만족될 때까지 반복한다.