본문 바로가기

백준/C++

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

728x90

 

 

문제 1110번

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

 

일단 원래 숫자를 origin변수에 저장해둔다. 그리고 반복문을 돌릴 때 n이 원래 숫자랑 같지 않을 때까지 반복해준다. 여기서 그냥 while문을 사용한다면 바로 반복문을 빠져나오게 되기 때문에 1번은 무조건 실행하고 조건문을 확인하는 do~while문을 사용해준다. 다음의 일의 자리에 있던 숫자를 십의 자리로 표현해주기 위해 n을 10으로 나눈 나머지에 10을 곱해준다. 여기에 n의 십의 자리와 일의 자리를 더한 값의 일의 자리를 더해줘야한다. 이 값을 구하기 위해 n에서 10을 나눈 몫과 n에 10을 나눈 나머지를 더한 후 10을 나눈 나머지를 구한다.

 

이렇게 두 수를 더한 값을 n에 업데이트해주고, 사이클을 돌았다는 의미로 count해준다. 그렇게 이 n과 원래 숫자 origin과 같아질 때 반복문을 빠져나와 count를 출력해주면 원하는 값을 얻을 수 있다.

 

#include <iostream>

using namespace std;

int main() {
	int n, count = 0;
	cin >> n;
	int origin = n;
	do {
		n = ((n % 10) * 10) + (((n / 10) + (n % 10)) % 10);
		count++;
	} while (origin != n);

	cout << count;

	return 0;
}

 

 

 

728x90