작성일 :

문제 링크

1110번 - 더하기 사이클

설명

문제에서 주어진 규칙에 따라서 새로운 숫자를 만드는 과정을 진행하고,

만들어진 새로운 숫자가 원래의 숫자가 되기까지 과정이 몇 번 반복되는지 계산하는 문제입니다.

문제에서 주어진 규칙을 수학적으로 변환하는 부분이 핵심인 것 같습니다.


Code

[ C# ]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
namespace Solution {
  class Program {
    static void Main(string[] args) {

      var n = int.Parse(Console.ReadLine()!);

      if (n == 0) Console.WriteLine(1);
      else {
        int lenCycle = 0;
        var num = n;
        while (true) {
          var sumDigits = num / 10 + num % 10;
          num = (num % 10) * 10 + sumDigits % 10;
          lenCycle++;

          if (num == n) break ;
        }

        Console.WriteLine(lenCycle);
      }

    }
  }
}



[ C++ ]

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
#include <bits/stdc++.h>

using namespace std;

int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);

  int n; cin >> n;

  if (n == 0) cout << "1\n";
  else {
    int lenCycle = 0, num = n;
    while (true) {
      int sumDigits = num / 10 + num % 10;
      num = (num % 10) * 10 + sumDigits % 10;
      lenCycle++;

      if (num == n) break ;
    }

    cout << lenCycle << "\n";
  }

  return 0;
}