접근 방법
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;
}
'Computer Science > Algorithm' 카테고리의 다른 글
[Algorithm/C] BOJ.1065 한수 (0) | 2018.01.03 |
---|---|
[Algorithm/C] BOJ.3047 ABC (1) | 2018.01.02 |
[Algorithm/C] AOJ.WITHDRAWAL(미해결) (1) | 2017.12.26 |
[Algorithm/C] BOJ.1016 제곱ㄴㄴ수(미해결) (2) | 2017.12.25 |
[Algorithm/C] BOJ.1977 완전제곱수 (0) | 2017.12.22 |