2022.12.18 Baekjoon1110

조진호·2022년 12월 18일
0

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);
}
profile
코린이

0개의 댓글

관련 채용 정보