BEAKJOON

백준(1110번 더하기 사이클)풀이 C++

Shin_jisoo 2020. 12. 4. 21:01
728x90

www.acmicpc.net/problem/1110

 

1110번: 더하기 사이클

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

www.acmicpc.net

1) 주석 없는 version

#include <iostream>
using namespace std;

int main() {
	int n;
	cin >> n;

	int a, b;
	int sum;
	int result;
	int i=0;

	result = n;
	while (1) {
		a = n / 10;
		b = n % 10;
		sum = a + b;
		n = (b * 10) + (sum % 10);
		i++;

		if (result == n) {
			cout << i << "\n";
			break;
		}
		
	}
}

2) 주석 있는 version

#include <iostream>
using namespace std;

int main() {
	int n; //입력 받을 숫자
	cin >> n;

	int a, b;
	int sum;
	int result;
	int i=0; // if문에 걸리기 전에 i++을 해줄것이기 때문에 0으로 초기화

	result = n; // 입력 받은 숫자 저장
	while (1) {
		a = n / 10; // 입력 받은 숫자의 십의 자리
		b = n % 10; // 입력 받은 숫자의 일의 자리
		sum = a + b;
		n = (b * 10) + (sum % 10); // 입력 받은 숫자의 일의 자리를 십의 자리 숫자로
		                           // sum의 일의 자리를 일의 자리로 사용
		i++; // 사이클 횟수 증가

		if (result == n) { // 처음 숫자와 같아질 경우
			cout << i << "\n";
			break; //반복문 종료
		}
		
	}
}

 

❌주의

◾ 변수 i 는 0으로 초기화

 처음 숫자는 result로 저장해두고 n의 값을 바꿔줘서 반복문이 실행 되도록 함