Koala - 14기/코딩테스트 준비 스터디

[백준/C++] 1769번 3의 배수

nunomi0 2024. 4. 14. 01:24

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

 

1769번: 3의 배수

문제가 잘 풀리지 않을 때, 문제를 바라보는 시각을 조금만 다르게 가지면 문제가 쉽게 풀리는 경험을 종종 해 보았을 것이다. 여러 가지 방법이 있지만 그 중 하나로 우리가 풀고 싶은 문제를

www.acmicpc.net

 

문제

큰 자연수 X가 주어질 때, 각 자릿수의 합이 한 자리수가 될 때 까지 몇 번의 과정을 거쳤는지 출력하고, 둘째 줄에는 그 한 자리 수가 3의 배수이면 "YES", 아니면 "NO"를 출력한다.

 

풀이

- 큰 수는 1,000,000 자리 이하의 수임에 주의한다. -> string 이용

- cnt++를 해주며 횟수를 저장하고, s의 각 자릿수의 합을 계산한다. 

#include <iostream>
#include <string>
using namespace std;

string s;
int cnt = 0;

int main() {
	cin >> s;
	while (s.length()!=1) {
		cnt++;
		int tmp = 0;
		for (int i = 0; i < s.length(); i++) {
			tmp += s[i] - '0';
		}
		s = to_string(tmp);
	}
	cout << cnt << '\n';
	if ((s[0] - '0') % 3 == 0) cout << "YES";
	else cout << "NO";
}