#백준 #acmicpc #Baekjoon #코딩 #알고리즘

 

#include <stdio.h>
#include <stdbool.h>  // about boolean type
#include <stdlib.h>
#include <math.h>	// power operator


int getDigits(int num);
bool isHansu(int num);


int main(void) {
	
	// 자연수 N - $num
	int num = 0;
	int count = 0;
	
//	printf("| Insert N which is equal or less than 1,000. :");
	scanf("%d", &num);
	
	int res = isHansu(num);
//	printf("test1: %d\n", res);
	
	int i;
	for(i = 1; i <= num; i++){
		if(isHansu(i)){
//			printf("%d is Hansu,\n", i);
			count++;
		}
	}
	
	printf("%d", count);
	
	return 0;
}




int getDigits(int num) {
	if(num/1000000000 != 0) return 10;
	if(num/100000000 != 0) return 9;
	if(num/10000000 != 0) return 8;
	if(num/1000000 != 0) return 7;
	if(num/100000 != 0) return 6;
	if(num/10000 != 0) return 5;
	if(num/1000 != 0) return 4;
	if(num/100 != 0) return 3;
	if(num/10 != 0) return 2;
	//if(num/1 != 0)
	return 1;
}




bool isHansu(int num) {
	bool result = true;
	int digits = getDigits(num);
	
	int* div = (int*)malloc(sizeof(int) * (digits+1));
	
	int i;
	for(i = digits; i>0; i--) {
		div[i] = num/pow(10.0, (i-1));
		div[i] %= 10;
	}
	
	for(i = digits; i>2; i--) {
		if(div[i-1] - div[i] != div[i-2] - div[i-1])
		result = false;
	}
	
	free(div);
	
	return result;
}

 

 

 

| 글이 도움이 되었다면 공감❤️ 부탁드립니다.
| 모든 댓글 환영합니다.
| Instargram @00_minwooky