Problem Solving/BOJ

[백준 / BOJ] C++ 1110 더하기 사이클

nageune 2023. 2. 8. 23:23
728x90
반응형

1110번: 더하기 사이클

 

문제

https://www.acmicpc.net/problem/1110

 

1110번: 더하기 사이클

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

www.acmicpc.net

 

 

 

풀이

0부터 99 사이의 수 중 10보다 작으면 앞에 0을 붙여 두 자리 수로 만들고, 수의 가장 오른쪽 자리 수와 각 자릿수를 합친 수의 가장 오른쪽 자리 수를 있어 붙여 새로운 수를 만들 수 있고 이를 더하기 사이클이라 한다. 정수 N을 입력받고 더하기 사이클을 거쳐 다시 N이 될 때까지 걸리는 횟수를 구하는 문제다.

 

주어진 대로 따라가기만 하면 해결되는 문제다. 모든 경우에서 수는 두자리수가 유지되므로 주어진 N의 1의 자리 수에 10을 곱한 값(10의 자리)과 10으로 나눈 몫에 나머지를 더한 값의 1의 자리 수(1의 자리)를 더하면 새로운 N이 된다. 이렇게 원래 시작했던 N이 될 때까지 반복하며 횟수를 구해 출력하면 된다.

 

 

코드

#include <bits/stdc++>
using namespace std;

int main() {
  ios::sync_with_stdio(false);
  cin.tie(NULL);
  int n, result, cnt = 0;
  cin >> n;
  result = n;
  do {
    n = (n % 10) * 10 + ((n / 10) + (n % 10)) % 10;
    cnt++;
  } while (n != result);
  cout << cnt << '\n';
  return 0;
}

 

728x90
반응형