[ 백준 10871번 ] 더하기 사이클

2021. 11. 8. 15:35백준/단계별 문제

백준 10871번 / 4단계 / 더하기 사이클

 

백준 10871번 - 더하기 사이클

 

문제 풀이
1. 십의 자리 변수 a, 일의 자리 변수 b, 새로운 일의 자리 변수 c, 원래 값 비교를 위한 hub변수, cycle 변수 선언
2. 변수 a는 정수형 변수이기 때문에 변수 hub를 10으로 나누면 몫만 저장이 된다.
ex) 26 / 10 = 2                 a = 2
3. 변수 b는 나머지 연산자를 이용해 변수 hub를 10으로 나눈 나머지 값이 저장이 된다.
ex) 26 % 10 = 6                b = 6
4. 변수 c는  변수 a와 변수 b의 저장된 값을 더한 뒤 나머지 연산자를 이용해 새로운 일의 자리 수를 만든다
ex) a(2) + b(6) = 8 % 10     c = 8
5. 십의 자리 변수 a는 일의 자리 변수 b의 값으로 바뀌고 일의 자리 변수 b는 새로운 일의 자리 변수 c로 저장이 되고 다시 숫자를 합쳐준다. 그리고 사이클 길이 변수 cycle에 1을 더해준다.
ex) a = b(6),  b = c(8)  |  a(6) * 10 + b(8) = 68
6. 이렇게 계속 반복을 하면서 hub랑 원래 숫자 n 이랑 다시 같아지면 반복문을 종료하고 변수 cycle을 출력한다.

 

코드
#include <stdio.h>

int main() {
	int a = 0, b = 0, c = 0, cycle = 0;
	int hub = 0;
	int n;

	scanf("%d", &n);

	hub = n;

	while(1) {
		a = hub / 10;
		b = hub % 10;
		c = ( a + b ) % 10;
		a = b;
		b = c;
		hub = a * 10 + b;
		cycle++;
		if ( hub == n ) break;
	}
	printf("%d", cycle);
}

'백준 > 단계별 문제' 카테고리의 다른 글

[ 백준 2562번 ] 최댓값  (0) 2021.11.09
[ 백준 10818번 ] 최소, 최대  (0) 2021.11.09
[ 백준 10871번 ] X보다 작은 수  (0) 2021.11.08
[ 백준 2439번 ] 별찍기 2  (0) 2021.11.08
[ 백준 2438번 ] 별찍기 1  (0) 2021.11.08