[Algorithm/C] BOJ.1065 한수
접근방법
1. 자릿수마다 쪼개서 배열에 넣고 배열마다 빼서 비교를 하였으나 안됨...
2. 비교 하려고 자리수 쪼개기를 할때마다 원래의 숫자가 0으로 되버리는게 문제였음.
3. 그래서 함수 처리를 하였음.
/*
Problem : 한수
Writer : J. I. Mun
Date : 20180103
*/
#include <stdio.h>
#include <stdlib.h>
int count(int number, int len);
int main(int argc, char * argv[]) {
int temp;
int len=0;
int number = 0;
int cnt = 99;
scanf_s("%d", &temp);
number = temp;
//입력받은 수의 자릿수 계산
while (1) {
if (temp == 0) {
break;
}
else {
len++; temp /= 10;
}
}
//printf("len : %d\n", len);
//printf("number : %d\n", number);
if (number <= 99) {
printf("%d", number);
}
else if (number == 1000) {
printf("144");
}
else {
while (1) {
if (count(number, len)) {
cnt++;
}
number--;
if (number == 99) {
break;
}
}
printf("%d", cnt);
}
return 0;
}
int count(int number, int len) {
int *arr = NULL;
arr = (int*)malloc(sizeof(int)*len);
for (int i = 0; i < len; i++) {
arr[len - 1 - i] = number % 10;
number /= 10;
}
if (arr[len - 1] - arr[len - 2] == arr[len - 2] - arr[len - 3]) {
return 1;
}
else {
return 0;
}
free(arr);
}