Koder / 박성훈
article thumbnail

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;
}

반응형