본문 바로가기
백준/단계별

백준 1110 C#) 더하기 사이클

by alpacadabra 2022. 4. 18.

문제가 잘 이해되지 않는다면 예제를 살펴봐야 한다.

주어진 수가 10보다 작다면 10을 곱하라고 했는데, 그렇다면 원래 수는 10을 곱하기 전의 수가 되는 것인가?

그렇지 않다. 예제 3을 보면 1이 입력되는데 원래 수가 1일 경우에는 사이클의 길이가 60이 아닌 1이 된다. (1 + 0 = 1 이므로 한번에 원래 수 1이 나온다.) 따라서 원래 수 또한 10이 곱해진 수가 되어야 한다.

그리고 계산 도중 10보다 작은 수가 나왔다고 해서 10을 곱해줄 필요는 없다. 이는 처음 주어진 수에만 해당되는 조건이다.

 

int n = int.Parse(Console.ReadLine());
if (n < 10) n *= 10;

int temp = n, cnt = 0;

do
{
    temp = ((temp % 10) * 10) + (((temp / 10) + (temp % 10)) % 10);
    cnt++;
} while (temp != n);

Console.Write(cnt);

 

어차피 한 번은 무조건 사이클을 돌려봐야 하기 때문에 do-while문을 사용했다.

어려운 문제는 아니지만 실수하기 쉬운 문제였다.

'백준 > 단계별' 카테고리의 다른 글

백준 2577 C#) 숫자의 개수  (0) 2022.04.18
백준 10818 C#) 최소, 최대  (0) 2022.04.18
백준 10951 C#) A+B - 4  (0) 2022.04.18
백준 10871 C#) X보다 작은 수  (0) 2022.04.18
백준 15552 C#) 빠른 A+B  (0) 2022.04.18

댓글