상세 컨텐츠

본문 제목

백준#1110 - 더하기 사이클

C#/알고리즘

by 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;
using System.Threading.Tasks;
 
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으로 나눈 나머지를 가져옵니다.

 

반복마다 횟수를 세주고 이를 출력하면 됩니다.

'C# > 알고리즘' 카테고리의 다른 글

백준#2562 - 최댓값  (0) 2020.04.08
백준#10818 - 최소, 최대  (0) 2020.04.08
백준#5585 - 거스름돈  (0) 2020.04.08
백준#10951 - A+B - 4  (0) 2020.04.08
백준#10952-A+B - 5  (0) 2020.04.08

관련글 더보기