백준/실버
[백준 1769번] 3의 배수 (C++)
게임개발기원
2024. 1. 23. 16:27
문제링크 : https://www.acmicpc.net/problem/1769
1769번: 3의 배수
문제가 잘 풀리지 않을 때, 문제를 바라보는 시각을 조금만 다르게 가지면 문제가 쉽게 풀리는 경험을 종종 해 보았을 것이다. 여러 가지 방법이 있지만 그 중 하나로 우리가 풀고 싶은 문제를
www.acmicpc.net
#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의 배수인지 아닌지에 따라 출력을 달리 해주면 된다.