문제를 3단계로 정리했다.
1. 주어진 수의 각 자리의 수를 더한다. (//1)
2. 주어진 수의 오른쪽 자리의 수와 1)에서 구한 수의 오른쪽의 수를 이어 붙여 새로운 수를 만든다. (//2)
3. 2)를 통해 만들어진 새로운 수가 처음 주어진 수와 같은 수가 될 때까지 1)과 2)를 반복한다. (while문으로)
**조건- 10보다 작은 수는 한자리 수이므로 앞에 0을 붙인다.
#include <bits/stdc++.h>
using namespace std;
int n, a, b, sn, snb, cnt=0, newNum=0, fixNum=0;
int main(){
cin >> n;
fixNum =n;
do{
a = n/10;
b = n%10;
sn = a+b; //1
snb = sn%10;
newNum = b*10 + snb; //2
cnt++;
n= newNum;
}while(fixNum != newNum);
cout << cnt;
return 0;
}
'코테' 카테고리의 다른 글
백준 1159번- 농구 경기 (0) | 2023.07.30 |
---|---|
백준 1157번 - 단어 공부 (0) | 2023.07.28 |
백준 1051번- 숫자 정사각형 (0) | 2023.07.27 |
백준 1100번- 하얀 칸 (0) | 2023.07.27 |
백준 1076번-저항 (0) | 2023.07.27 |