[Algorithm/C] BOJ.14954 Happy Number
접근 방법
1. 가장 큰 입력의 수의 배열을 만든 후 자리수를 쪼갠다.
2. 매우 비효율적인 방법으로 보임....ㅠㅠ
3. C언어로 더 좋은방법 있으면 댓글 부탁드립니다.
/*
Problem : Happy Number
Writer : J. I. Mun
Date : 20180101
*/
#include <stdio.h>
int buf[10] = { 0 };
int f(int n) {
int sum = 0;
for (int i = 0; i<=10 ; i++) {
if (n / 10 != 0) {
buf[i] = n % 10;
}
else {
buf[i] = n;
}
n /= 10;
}
/*
for (int i = 0; i < sizeof(buf)/sizeof(buf[0]); i++) {
printf("%d ", buf[i]);
}
*/
for (int i = 0; i<= 10; i++) {
sum += buf[i] * buf[i];
}
// printf("sum : %d\n", sum);
if (sum == 4) {
return -1;
}
else if (sum == 1) {
return 1;
}
else
return f(sum);
}
int main(int argc, char * argv[]) {
int n;
int t = 0;
scanf_s("%d", &n);
t = f(n);
if (t == 1) {
printf("HAPPY\n");
}
if (t == -1) {
printf("UNHAPPY\n");
}
return 0;
}