- 백준 1065번: 한수
- 문제
어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다.
N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.
- 입력
첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.
- 출력
첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.
import java.util.Scanner;
public class BOJ_1065 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = Integer.parseInt(sc.nextLine());
int result = 99; // 100 이상일 때 사용
if(num < 100) {
System.out.println(num);
} else {
for(int i = 100 ; i <= num ; i++) {
result += han(i);
}
System.out.println(result);
}
sc.close();
}
private static int han(int num) {
int hundred = num / 100;
int ten = num % 100 / 10;
int one = num % 10;
// 등차수열의 특징 : 가운데 숫자에 2를 곱하면 직전과 직후 숫자의 합과 동일
if(ten*2 == hundred + one) {
return 1;
}
return 0;
}
}