본문 바로가기

알고리즘(C++)/백준 알고리즘

[백준] C++ 1110번 : 더하기 사이클

풀이과정


입력 받은 N이 10보다 작다면 iNum1=0, iNum2 =N; 

10의자리를 나타내는 iNum1에 0을 1의 자리를 나타내는 iNum2에 N의 값을 대입해준다.

입력 받은 N이 10보다 크다면 (N>=10), iNum1 = N/10, iNum2 = N%10;

10의자리를 나타내는 iNum1에 N을 10으로 나눈 몫을 1의 자리를 나타내는 iNum2에 N을 10으로 나눈 나머지를 대입해준다.

 

진행하는 연산을 설명하자면

 A(10의자리) , B(1의자리) , C (A+B를 10으로 나눈 나머지) , D (A+B를 10으로 나눈 몫) 

A B = D C 로 다음 연산의 A=B, B=C 가 된다.

이 과정을 처음 A B값이 나올 때 까지 반복한 횟수를 구하면 된다.  

 

코드


 

더보기

 

#include <iostream>
using namespace std;
int main()
{
	int n = 0;
	int iNum1 = 0, iNum2 = 0;
	int iCurrNum1 = 0, iCurrNum2 = 0;
	int iCycle = 0;

	cin >> n;
	
	if (n < 10) iNum1 = 0, iNum2 = n;
	else iNum1 = n / 10, iNum2 = n % 10;

	iCurrNum1 = iNum1;
	iCurrNum2 = iNum2;

	while (true)
	{
		int iNewNum = (iCurrNum1 + iCurrNum2) % 10;
		iCurrNum1 = iCurrNum2;
		iCurrNum2 = iNewNum;

		iCycle++;
		if (iNum1 == iCurrNum1 && iNum2 == iCurrNum2) break;
	}
	cout << iCycle << endl;
	return 0;
}