티스토리 뷰

문제

0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다. 다음 예를 보자.

26부터 시작한다. 2+6 = 8이다. 새로운 수는 68이다. 6+8 = 14이다. 새로운 수는 84이다. 8+4 = 12이다. 새로운 수는 42이다. 4+2 = 6이다. 새로운 수는 26이다.

위의 예는 4번만에 원래 수로 돌아올 수 있다. 따라서 26의 사이클의 길이는 4이다.

N이 주어졌을 때, N의 사이클의 길이를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 N이 주어진다. N은 0보다 크거나 같고, 99보다 작거나 같은 정수이다.

출력

첫째 줄에 N의 사이클 길이를 출력한다.

예제 입력 1

26

예제 출력 1

4

예제 입력 2

55

예제 출력 2

3

예제 입력 3

1

예제 출력 3

60

출처: 문제를 번역한 사람: baekjoon

해설

이 문제를 해설할 자격이 있는지 모르겠다. 내 코드의 체점 결과는 틀렸습니다!이다. 그럼에도 내 코드를 올리는 것은 어디서 틀렸는지 모르겠다는 것 때문이다. 예제 입력과 결과도 정확하게 일치하고 로직상 문제도 발견하지 못했다. 으레 발목을 잡는 출력 형식상의 운제일까 싶지만 나로선 알 수 없다. 혹시 이 코드ㅇ 문제점을 알아챈 사람이 있거든 댓글에 남겨 주시길.

입력받은 수를 두 개의 수(first, second)로 쪼개기는 다음의 코드로 나누기 연산(/)과 나머지 연산(%)으로 가능하다. while 루프를 시작하는데 while 루프를 중단하는 조건은 입력받은 수(num)와 결괏값(result, 첫 번째 루프를 통과하기 위해 num으로 입력되지 않을 값인 0으로 result를 초기화한다.)을 비교하여 그 결과가 같을 경우에 while 루프가 중단된다. 루프 안에서 이 두 수를 합한 수의 일의 자리수(temp)도 역시 나누기 연산을 통해 받는다. 다음 연산을 위해 first에 second를 대입하고, second에는 temp를 대입한다. 마지막으로 first(십의 자리)와 second(일의 자리)를 다시 십진수로 변환하여 result에 대입한다. 루프에서 num과 result를 비교하여 그 값이 같아질 때까지 루프를 돈다. 돌 때마다 times가 1씩 증가하는 것도 잊지 않고.

소스코드: c

#include <stdio.h>

int main(int argc, char *argv[])
{
    int num, first, second, temp, result = 0;
    int times = 0;
    scanf("%d", &num);

    first = num / 10;
    second = num % 10;

    while(num != result)
    {
        temp = (first + second) % 10;
        first = second;
        second = temp;
        result = (first * 10) + second;
        times += 1;
    }

    printf("%d", times);

    return 0;
}

소스코드: python3

num = int(input())
first = num // 10
second = num % 10
result = 0
times = 0

while(num != result):

    temp = (first + second) % 10
    first = second
    second = temp
    result = (first * 10) + second
    times = times + 1

print(times)

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함
11-29 08:59