본 문제의 요구사항은 다음과 같다
- 주어지는 숫자의 범위는 0 ~ 99 이다
- 주어진 숫자의 1의 자리와 , 각자리 숫자의 합의 1의 자리 를 이어붙여 새로운 숫자를 만든다.
- 이러한 과정을 반복하여 원래 수로 돌아오는 횟수가 몇번인지 구한다.
본 문제를 풀기위해서 한 사이클 즉 하나의 숫자를 다음 숫자로 변환하는 과정만 잘 도출해 내면 간단하게 해결할 수 있다. 1의 자리 숫자를 구하기 위해서는 10으로 나눈 나머지 이므로 % 연산자를 활용하면 아래 코드처럼 구현할 수 있다.
#include <iostream>
#include <string>
#include <vector>
using namespace std;
void process();
int main()
{
int num;
cin >> num;
int numClone = num;
int cycle = 0;
while (1)
{
cycle++;
int newNum = (num / 10 + num % 10) % 10 + (num % 10 * 10);
if (newNum == numClone) break;
num = newNum;
}
cout << cycle << endl;
}
'알고리즘' 카테고리의 다른 글
백준 - 4673 셀프 넘버 (0) | 2020.02.01 |
---|---|
백준 - 4354 문자열 제곱 (0) | 2020.02.01 |
백준 1463 - 1로 만들기 (0) | 2019.12.15 |
백준 1158 - 조세퍼스 문제 (0) | 2019.12.12 |
백준 1065 - 한수 (0) | 2019.12.10 |