백준온라인저지

1110번 더하기 사이클

wonjjong 2020. 9. 19. 17:31

문제 출처 : https://www.acmicpc.net/problem/1110

 

1110번: 더하기 사이클

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

www.acmicpc.net

 

 

풀이 과정

 

1. 우선 값을 분리하는게 중요합니다. 먼저 입력받은 N을 10의 자리와 1의 자리로 분리하고 그 합을 구했습니다.

 

2. 합을 구한 후 분리한 1의 자리의 값과 구한 합의 1의 자리를 붙여 새로운 수를 만들었습니다. 

 

3. 가장 처음 입력받은 N과 같아질 때 까지 반복하면 문제를 해결할 수 있습니다.

 

 

소스 코드

더보기
#include <iostream>

using namespace std;

int main()
{

   int n;
   cin >> n;
   int count = 0;
   int temp = n;

   while (true)
   {
      ++count; 
      int first = temp / 10;
      int second = temp % 10;
      int sum = first + second;
      if (first == 0)
      {
         temp = second * 10 + second;
      }
      else
      {
         temp = second*10 + (sum % 10);
      }
      if(temp == n ) break;

   }
    cout << count << endl;
}

'백준온라인저지' 카테고리의 다른 글

백준 온라인 저지 1759번 암호 만들기  (0) 2022.10.05
2292번 벌집  (0) 2020.07.31
2193번 이친수  (0) 2020.07.30
10828번 스택  (0) 2020.05.21
4344번 평균은 넘겠지  (0) 2020.05.21