https://www.acmicpc.net/problem/1110
코드 #1
#include<stdio.h>
int main(void) {
int num = 0;
int cycle = 0;
int sum1, sum2 = 0;
scanf("%d", &num);
int result = num;
while(sum1 != result) {
sum1 = result;
sum2 = (sum1%10)*10 + (sum1/10+sum1%10)%10;
sum1 = sum2;
cycle++;
}
printf("%d", cycle);
}
틀린 이유: input에 '26'을 넣고 코드 #1을 컴파일 하니 68이 무한히 출력되는 결과가 나왔다. 이는 while문 내부에 있는'sum1 = result'문 때문인 것으로 보이는데 sum1의 값이 68로 초기화되고 다시 반복될 때 68이 아닌 26으로 시작되어 68이 끊임없이 출력된거 같다.
코드 #2
#include<stdio.h>
int main(void) {
int num = 0;
int cycle = 0;
int sum = 0;
scanf("%d", &num);
int result = num;
while(sum != result) {
sum = (num%10)*10 + (num/10+num%10)%10;
num = sum;
cycle++;
}
printf("%d", cycle);
}
틀린 이유: input이 0일때 값이 1이 나와야 하는데 0이 출력됐다. sum의 값이 0으로 초기화되어 있어 while문의 조건을 만족시키지 못해 올바른 출력이 안 나온것 같다.
코드 #3
#include<stdio.h>
int main(void) {
int num = 0;
int cycle = 0;
int sum = -1;
scanf("%d", &num);
int result = num;
while(sum != result) {
sum = (num%10)*10 + (num/10+num%10)%10;
num = sum;
cycle++;
}
printf("%d", cycle);
}