https://www.acmicpc.net/problem/1769
1769번: 3의 배수
문제가 잘 풀리지 않을 때, 문제를 바라보는 시각을 조금만 다르게 가지면 문제가 쉽게 풀리는 경험을 종종 해 보았을 것이다. 여러 가지 방법이 있지만 그 중 하나로 우리가 풀고 싶은 문제를
www.acmicpc.net
범위 잘못봐서 틀렸던 문제.
첫 입력을 문자열로 받아야 함에 유의하자.
첫 입력을 받아서 Y를 만들어 내면, Y의 범위는 900만 이하이므로
int범위 안에 저장할 수 있으니 오버플로우에 대해서는 걱정하지 않아도 된다.
나는 만든 Y를 다시 X에 저장하는 방법으로 구했다.
#include <bits/stdc++.h>
using namespace std;
int main(){
string s;
cin >> s;
int cnt = 0;
while(s.length() > 1){
cnt++;
int val = 0;
for(auto c : s) val += c-'0';
s = to_string(val);
}
cout << cnt << "\n";
if(s=="3" || s=="6" || s=="9") cout << "YES";
else cout << "NO";
return 0;
}
반응형