Computer Science/Algorithm

[Algorithm/C] BOJ.1065 한수

재오니소스 2018. 1. 3. 23:52



접근방법

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);

}


출처