문제링크 : https://www.acmicpc.net/problem/1769
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
const int MAX = 987654321;
int X, cnt;
string s;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> s;
while(s.size()!=1) //한 자릿수가 될 때까지
{
int sum = 0;
for(int i=0; i<s.size(); i++)
{
sum += s[i]-'0'; //숫자로 변환후 더해주기
}
s = to_string(sum); //다시 문자로
cnt++; //카운팅
}
cout << cnt << "\n";
cout << (stoi(s)%3 ? "NO" : "YES");
return 0;
}
계산을 용이하게 하기 위해서 숫자를 문자열로 입력받는다.
그리고 해당 문자열의 각 한자리를 일일이 숫자로 변환 후에 누적합을 구해준다.
해당 누적합을 다시 문자열로 변환하고, 해당 문자열의 길이가 1이 될 때까지 이를 반복한다.
위 과정에서 카운팅도 같이 해준다.
이렇게 나온 마지막 문자열을 숫자로 변환 후, 해당 숫자가 3의 배수인지 아닌지에 따라 출력을 달리 해주면 된다.
'백준 > 실버' 카테고리의 다른 글
[백준 2688번] 줄어들지 않아 (C++) (0) | 2024.01.25 |
---|---|
[백준 1312번] 소수 (C++) (0) | 2024.01.24 |
[백준 1747번] 소수&팰린드롬 (C++) (0) | 2024.01.21 |
[백준 17212번] 달나라 토끼를 위한 구매대금 지불 도우미 (C++) (0) | 2024.01.16 |
[백준 14430번] 자원 캐기 (C++) (0) | 2024.01.11 |