본문 바로가기
알고리즘/백준 문제 풀이

[BOJ/백준] 1110번 더하기 사이클 - [c/c++] 풀이

by 미니상미니 2022. 10. 11.
반응형

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

 

1110번: 더하기 사이클

0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음,

www.acmicpc.net

 

 

 

 


  • 문제

단계별로 풀어보기 - 반복문 - [13단계] 1110번


해설

26을 사이클 한 번 돌리면 2 + 6 = 8 -> 68이다.

84를 사이클 한 번 돌리면 8 + 4 = 1-> 42이다.

 

빨간색 : 더하기 사이클 후 나온 수의 십의 자리 수

주황색 : 더하기 사이클 후 나온 수의 일의 자리 수

 

식으로 나타내면 n을 사이클 한 번 돌리면 n % 10 * 10 + (n / 10 + n % 10) % 10 이다.

설명하자면 n의 일의 자리 수를 십의 자리 수로, 각 자리 수를 더한 후 일의 자리 수를 일의 자리 수로 놓으면 된다.

 

n % 10 * 10 -> 6, 4

(n / 10 + n % 10) % 10 -> 8, 2

코드

c

#include <stdio.h>


int main() {

	int N;
	int temp;
	scanf("%d", &N);

	if (N < 10) N *= 10; // 10보다 작은 수 0을 붙여 두 자리 수 만들기

	int cnt = 0;
	temp = N;

	while (1) {
		cnt++;
		temp = temp % 10 * 10 + (temp / 10 + temp % 10) % 10;

		if (temp == N) {
			break;
		}
	}

	printf("%d", cnt);


	return 0;
}

 

c++

#include <iostream>

using namespace std;

int main() {

	int N;
	int temp;
	cin >> N;

	if (N < 10) N *= 10; // 10보다 작은 수 0을 붙여 두 자리 수 만들기

	int cnt = 0;
	temp = N;

	while (1) {
		cnt++;
		temp = temp % 10 * 10 + (temp / 10 + temp % 10) % 10;

		if (temp == N) {
			break;
		}
	}

	cout << cnt;


	return 0;
}

 

 

 

 

 

반응형

댓글