C#/알고리즘
백준#1110 - 더하기 사이클
McRobbin
2020. 4. 8. 12:45
https://www.acmicpc.net/problem/1110
1110번: 더하기 사이클
0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다. 다음 예를 보자. 26부터 시작한다. 2+6 = 8이다. 새로운 수는 68이다. 6+8 = 14이다. 새로운 수는 84이다. 8+4 =
www.acmicpc.net
while문으로 분류된 더하기 사이클 문제입니다.
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
|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace _1110
{
class Program
{
static void Main(string[] args)
{
int buff;
int input = buff = int.Parse(Console.ReadLine());
int count = 1;
buff = (buff % 10 * 10) + ((buff / 10 + buff % 10) % 10);
while (input != buff)
{
++count;
buff = (buff % 10 * 10) + ((buff / 10 + buff % 10) % 10);
}
Console.WriteLine(count);
}
}
}
|
두자리 수가 주어졌을 때 일정한 규칙으로 다음 두자리 숫자를 만들어냅니다.
26 -> 68이 되는데 이는
첫자리의 1의자리 수 6이 다음 수의 10자리 수로. 2 + 6 두 자리수의 합이 다음 수의 1의자리 수가 됩니다.
다음 10의 자리 : num % 10 * 10을 하면 1의자리 수를 가져오고 10을 곱해 두자리 수가 됩니다.
다음 1의 자리 : num % 10 + num / 10을 하면 각 자리수의 합이 되며 10으로 나눈 나머지를 가져옵니다.
반복마다 횟수를 세주고 이를 출력하면 됩니다.