
어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.
첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.
첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.
입력으로 N이 주어졌을 때 1부터 N까지의 한수를 구하는 것이다. 먼저 1~9까지와 10~99 까지는 무조건 등차수열을 이루어 한수로 생각해야 한다. 또한 문제 조건으로 1000이하의 수만 입력으로 주어진다고 한 점을 유의해서 풀면 된다.
따라서 1~99까지는 무조건 한수로 처리하고 1000은 등차수열을 이루지 않으니 한수로 처리하면 안된다. 이제 100 ~ 999 범위를 처리해야 하는데 각 자리수의 수를 가지고 차이를 이용하여 풀면 된다.
즉, 백의자리 십의자리 일의자리 수를 구해서 (백의 자리 - 십의 자리) 와 (십의 자리 - 일의 자리) 가 같을 때 한수인 것이다.
따라서 for문으로 1부터 N까지 반복하면서 한수일 때 갯수를 세워주면 된다.
import java.util.*;
public class Main {
public static boolean check(int n) {
if (n >= 1 && n < 100) {
return true;
} else if (n == 1000) {
return false;
} else {
// 100의 자리
int a = n / 100;
// 10의 자리
int b = (n % 100) / 10;
// 1의 자리
int c = n % 10;
if ((a - b) == (b - c)) {
return true;
} else {
return false;
}
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int count = 0;
for (int i = 1; i <= n; i++) {
if (check(i)) {
count += 1;
}
}
System.out.println(count);
}
}