본문 바로가기

코딩테스트

[C++] Happy Number

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

'코딩테스트' 카테고리의 다른 글

[C++] 1차원라이프(Life)게임  (0) 2021.06.29
[C++] 제일 작은 수 제거하기  (0) 2021.06.28
[C++] 행렬 곱셈  (0) 2021.06.27
[C++] 행렬 덧셈  (0) 2021.06.27
[C++] 집합 연산  (0) 2021.06.27