🔒 문제
어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.
⌨ 입력
첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.
🖨 출력
첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.
📚 예제
Ex1)
110
99
Ex2)
1
1
Ex3)
210
105
Ex4)
1000
144
Ex5)
500
119
🔑 c언어 코드
#include<stdio.h>
int count(int N);
int main()
{
int N;
scanf("%d", &N);
printf("%d", count(N));
return 0;
}
int count(int N)
{
int ans;
int k[4];
if (N < 100) // 세자리수 미만의 수는 모두 등차수열 이룸
ans = N;
else
{
ans = 99;
for (int i = 100; i < N + 1; i++)
{
int a = i;
int j = 0;
while (a != 0)
{
k[j++] = a % 10;
a /= 10;
}
if (j == 3) // 3자리 수 자연수
{
if (k[1] * 2 == (k[0] + k[2]))
ans++;
}
else // 1000때문에 만들었다! 이거 아니었으면 훨씬 짧았는데,,,
{
if ((k[0] + k[3]) == (k[1] + k[2]))
ans++;
}
}
}
return ans;
}
'BAEKJOON > 단계별로 풀어보기' 카테고리의 다른 글
[BOJ] 11720번 : 숫자의 합 (0) | 2022.08.02 |
---|---|
[BOJ] 11654번 : 아스키코드 (0) | 2022.08.02 |
[BOJ] 4673번 : 셀프 넘버 (0) | 2022.08.02 |
[BOJ] 15596번 : 정수 N개의 합 (0) | 2022.08.02 |
[BOJ] 4344번 : 평균은 넘겠지 (0) | 2022.08.01 |