풀이
문제에 주어진 규칙에 따라 수를 계산하면서 사이클을 1씩 더하고 출력하는 문제입니다.
규칙 : 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙여 새로운 수를 만든다.
코드
C
#include <stdio.h>
int main() {
int ogn, chg, tmp, a, b, c, cycle = 0;
scanf("%d", &ogn);
tmp = ogn;
while(1) {
a = tmp/10;
b = tmp%10;
c = a + b;
chg = b * 10 + c % 10;
cycle++;
if(ogn == chg)
break;
else
tmp = chg;
}
printf("%d", cycle);
return 0;
}
C++
#include <iostream>
using namespace std;
int main() {
int ogn, chg, a, b, c, cycle = 0;
cin >> ogn;
int tmp = ogn;
while (1) {
a = tmp/10, b = tmp%10, c = a + b;
chg = b * 10 + c % 10;
cycle++;
if (ogn == chg) {
break;
}
else {
tmp = chg;
}
}
cout << cycle;
return 0;
}
Java
import java.util.*;
class Main{
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
int ogn = sc.nextInt();
int cycle = 0, tmp = ogn;
while (true) {
int a = tmp/10, b = tmp%10, c = a + b;
int chg = b * 10 + c % 10;
cycle++;
if (ogn == chg) {
break;
}
else {
tmp = chg;
}
}
System.out.println(cycle);
}
}
Python
ogn = int(input())
cycle = 0
tmp = ogn
while True:
a = tmp//10
b = tmp%10
c = a + b
chg = b*10 + c%10
cycle += 1
if ogn == chg:
break
else:
tmp = chg
print(cycle)