※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 2145번 문제인 숫자 놀이이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/2145
2145번: 숫자 놀이
각 줄에 숫자 N이 주어진다. N은 100,000보다 작은 양의 정수이다. 마지막 입력은 0이며, 0에 대한 결과는 출력하지 않는다.
www.acmicpc.net
양의 정수 N이 주어졌을 때, 각 자릿수의 합이 10 미만이 될 때까지 N을 "N의 각 자릿수의 합"으로 바꿔준 후 그 N을 출력하는 문제이다.
N의 각 자릿수의 합은 N%10, 즉 N을 10으로 나눈 나머지를 합 변수에 더하고 N을 N/10, 즉 N을 10으로 나눈 몫을 대입하는 것을 N이 0이 될 때까지 반복하는 것으로 구할 수 있다.
아래는 제출한 소스코드이다.
#include <iostream>
using namespace std;
void solve(int x) {
while (x > 9) {
int tmp = 0;
while (x) {
tmp += x % 10;
x /= 10;
}
x = tmp;
}
cout << x << '\n';
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int N; cin >> N;
while (N) {
solve(N);
cin >> N;
}
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 6136 // C++] Milking Time (0) | 2022.08.07 |
---|---|
[BOJ 2787 // C++] 흔한 수열 문제 (0) | 2022.08.07 |
[BOJ 18767 // C++] 조교 배치 (0) | 2022.08.06 |
[BOJ 15504 // C++] 프로그래밍 대결 (0) | 2022.08.05 |
[BOJ 8992 // C++] 집기 게임 (0) | 2022.08.04 |