728x90
문제 설명
어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.
출력
첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.
풀이과정
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int Han(int n) // 한수 함수 정의
{
int i, cnt = 0, hund, ten, one;
if (n < 100) // 입력 값 n이 100보다 작을 경우, n 그대로 출력
return n;
else
{
// 입력 값 n이 100보다 클 경우 이므로 i의 초기값은 100, n보다 작거나 같을 때까지
// i에 1씩 더하며 반복한다.
for (i = 100; i <= n; i++)
{
hund = i / 100;
ten = (i % 100) / 10;
one = (i % 100) % 10;
// (백의 자리수의 숫자 - 십의 자리수의 숫자) = (십의 자리수의 숫자 - 일의자리 숫자)
// 위 식이 성립된다면 count에 1씩 더함
if ((hund - ten) == (ten - one))
cnt++;
}
// 100 이전에 한수는 99까지 99개 이므로 99에 count 값을 더해준다.
return (99 + cnt);
}
}
int main(void)
{
int input, result;
scanf("%d", &input);
result = Han(input);
printf("%d", result);
return 0;
}
728x90
'Algorithm > BAEKJOON' 카테고리의 다른 글
[BOJ/C] 11659번 문제풀이 (0) | 2023.04.05 |
---|---|
[BOJ/Python] 1038번 문제풀이 (0) | 2023.04.05 |
[BOJ/C] 10430 문제풀이 (0) | 2023.03.26 |
[백준] 2475번 문제풀이 (1) | 2022.09.19 |
[백준_C언어] 2163번 문제풀이 (0) | 2022.09.09 |