본문 바로가기

알고리즘

백준 1110 - 더하기 사이클

본 문제의 요구사항은 다음과 같다

 - 주어지는 숫자의 범위는 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