코딩테스트

[C++] Happy Number

뇨롱 2021. 6. 27. 01:06

숙제 5 (해피 넘버)

Happy Number f(n)자리 수를 제곱한 합하는 함수이다. 예를 들어, n=19f(n)값은 1^2+9^2=82, 82된다. 일부 자연수는 함수 f반복하는 경우 1되는 경우가 있으며, 이런 자연수를 ‘Happy Number’라고 한다. 19Happy Number인데, 아래 예를 보면 n=19에서 함수 f반복하면 1되는 것을 확인할 있다.

 

주어진 숫자가 Happy Number인지 확인하는 프로그램을 작성하시오.

 

#include<iostream>
#include<vector>
using namespace std;

void happy_num(int num){
	vector<int> arr;
	int a=0x00;
	int b=0x00;
	if(num==1){
			cout<<"HAPPY"<<endl;
			return;
	}
	if(num==4){
		cout<<"UNHAPPY"<<endl;
		return;
	}
	for(int i=0;i<arr.size();i++){
		if(num==arr[i]){
			cout<<"UNHAPPY"<<endl;
			return;
		}
			
	}
		
	arr.push_back(num);
	a=num;
	while(a){
		 b+=(a%10)*(a%10);
		 a/=10;
	}

	happy_num(b);
	
}

int main(){
	int num=0x00;
	cin>>num;
	happy_num(num);
	return 0;
}