728x90
반응형
1110번: 더하기 사이클
문제
https://www.acmicpc.net/problem/1110
풀이
0부터 99 사이의 수 중 10보다 작으면 앞에 0을 붙여 두 자리 수로 만들고, 수의 가장 오른쪽 자리 수와 각 자릿수를 합친 수의 가장 오른쪽 자리 수를 있어 붙여 새로운 수를 만들 수 있고 이를 더하기 사이클이라 한다. 정수 N을 입력받고 더하기 사이클을 거쳐 다시 N이 될 때까지 걸리는 횟수를 구하는 문제다.
주어진 대로 따라가기만 하면 해결되는 문제다. 모든 경우에서 수는 두자리수가 유지되므로 주어진 N의 1의 자리 수에 10을 곱한 값(10의 자리)과 10으로 나눈 몫에 나머지를 더한 값의 1의 자리 수(1의 자리)를 더하면 새로운 N이 된다. 이렇게 원래 시작했던 N이 될 때까지 반복하며 횟수를 구해 출력하면 된다.
코드
#include <bits/stdc++>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
int n, result, cnt = 0;
cin >> n;
result = n;
do {
n = (n % 10) * 10 + ((n / 10) + (n % 10)) % 10;
cnt++;
} while (n != result);
cout << cnt << '\n';
return 0;
}
728x90
반응형
'Problem Solving > BOJ' 카테고리의 다른 글
[백준 / BOJ] C++ 11053 가장 긴 증가하는 부분 수열 (0) | 2023.02.09 |
---|---|
[백준 / BOJ] C++ 1124 언더프라임 (0) | 2023.02.08 |
[백준 / BOJ] C++ 1085 직사각형에서 탈출 (0) | 2023.02.08 |
[백준 / BOJ] C++ 1075 나누기 (0) | 2023.02.08 |
[백준 / BOJ] C++ 1065 한수 (0) | 2023.02.08 |