※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 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

+ Recent posts