백준 1110번 (더하기 사이클, C++) [BAEKJOON]

더하기 사이클

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

시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초128 MB2512531171369533846.557%

문제

0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다.

먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다.

그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다.

다음 예를 보자.

26부터 시작한다. 2+6 = 8이다. 새로운 수는 68이다.

6+8 = 14이다. 새로운 수는 84이다. 8+4 = 12이다. 새로운 수는 42이다. 4+2 = 6이다. 새로운 수는 26이다.

위의 예는 4번만에 원래 수로 돌아올 수 있다.

따라서 26의 사이클의 길이는 4이다.

N이 주어졌을 때, N의 사이클의 길이를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 N이 주어진다. N은 0보다 크거나 같고, 99보다 작거나 같은 정수이다.

출력

첫째 줄에 N의 사이클 길이를 출력한다.

예제 입력 1

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
26
26
26

예제 출력 1

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
4
4
4

예제 입력 2

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
55
55
55

예제 출력 2

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
3
3
3

예제 입력 3

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
1
1
1

예제 출력 3

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
60
60
60

예제 입력 4

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
0
0
0

예제 출력 4

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
1
1
1

예제 입력 5

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
71
71
71

예제 출력 5

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
12
12
12

출처

  • 문제를 번역한 사람: baekjoon
  • 어색한 표현을 찾은 사람: doju
  • 문제의 오타를 찾은 사람: eric00513
  • 데이터를 추가한 사람: jh05013

알고리즘 분류


통과된 코드

문제에서 알려준 방법으로 구현하면 쉽게 해결이 가능하다

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#include <iostream>
using namespace std;
int N, temp, res = 0;
int main()
{
cin >> N;
temp = N;
while (true) {
int A, B;
A = temp / 10;
B = temp % 10;
temp = ((A + B) % 10) + B * 10;
res++;
if (temp == N) break;
}
cout << res;
return 0;
}
#include <iostream> using namespace std; int N, temp, res = 0; int main() { cin >> N; temp = N; while (true) { int A, B; A = temp / 10; B = temp % 10; temp = ((A + B) % 10) + B * 10; res++; if (temp == N) break; } cout << res; return 0; }
#include <iostream>

using namespace std;

int N, temp, res = 0;

int main()
{
	cin >> N;

	temp = N;

	while (true) {
		int A, B;
		A = temp / 10;
		B = temp % 10;
		temp = ((A + B) % 10) + B * 10;
		res++;
		if (temp == N) break;
	}

	cout << res;

	return 0;
}

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다