C++/백준 C++

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

CE : 하랑 2023. 12. 22. 10:04

 

 

코드

#include <iostream>
#include <string>

using namespace std;

class answer // 객체 개념
{
public:

	// 생성자 -> private 변수 초기화
	answer() : count(0), Y(0) 
	{

	}

	string XY; // -> public 변수

	void check3() {
		// X가 한 자리 숫자 인 경우 
		if (XY.size() == 1) {
			if ((XY[0] - '0') % 3 == 0) { // 3의 배수인 경우
				cout << count << "\n";
				cout << "YES";
			}
			else { // 3의 배수가 아닌 경우
				cout << count << "\n";
				cout << "NO";
			}
		}
		else {

			while (true) {
				for (int i = 0; i < XY.size(); ++i){
					Y = Y + (XY[i] - '0'); // 각 자리 수만큼 Y에 추가 합 연산
				}

				++count; // 그 과정을 몇번 했는지 카운트

				if (Y < 10) { // 10보다 작아지는 시점에서 반복문 탈출
					break;
				}

				XY = to_string(Y); // Y를 다시 XY에 정수 -> 문자열로 변환
				Y = 0; // Y값은 다시 0으로
			}

			cout << count << "\n";

			if (Y % 3 == 0) { // 3의 배수면 YES
				cout << "YES";
			}
			else {
				cout << "NO"; // 아니면  NO
			}
		}
	}

protected:

private:
	int count;
	int Y;
};


int main()
{
	string x;

	cin >> x;

	answer NewAnswer = answer(); // 객체 생성 및 초기화

	NewAnswer.XY = x; // NewAnswer.XY : public : 외부에서 사용 가능

	NewAnswer.check3(); // check3() -> public : 외부에서 사용 가능
}