[백준 C] 1065 : 한수

anfruf·2022년 6월 9일

백준 C언어

목록 보기
44/62
  1. C언어 : 함수(3)

09.JUN.2022

문제 : 함수

어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 
연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, 
N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오. 

두 자리 수는 연속된 수의 차이가 몇이든 상관없이 일정한 차이가 된다.
세 자리 수부터 백의 자리와 십의 자리 차이와 십의 자리와 일의 자리 차이가 같아야 한다. 즉, 두 자리 수인 99까지 등차수열은 99개다.

문제 풀이

#include <stdio.h>

int HanSu(int n);

int main()
{
	int n;

	scanf("%d", &n);

	printf("%d", HanSu(n));

	return 0;
}

int HanSu(int n)
{
	int sum = 0;

	if (n > 99) // 입력받은 수가 3자리일 때
	{
		sum += 99; // 99까지는 등차수열 99개
        // 99+ 입력받은 수까지 등차수열 개수 count
		for (int i = 100; i <= n; i++) {
			int n1 = i / 100; //백의 자리
			int n2 = i / 10 % 10; //십의 자리
			int n3 = i % 10; //일의 자리
			if (n1 - n2 == n2 - n3) sum++; 
		}
	}
	else sum = n; // 입력받은 수가 2자리일 때 = 입력받은 수만큼 등차수열 존재

	return sum;
}

0개의 댓글