/ ALGORITHM

한수

한수


문제

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

입력

110

출력

99

import java.io.*;

public class Main {

public static void main(String args[]) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

    int n = Integer.parseInt(br.readLine());

    bw.write(check(n) + "\n");
    bw.flush();
    br.close();
    bw.close();
    }

    static int check(int n) {
        int count =0; //정해진입력값에서 한수가 몇개인지
        int a[] = new int[3]; //100~ 999자리수를 저장하기위한 배열
        for(int i=1; i<=n; i++) {//  1~ 입력만큼
            if(i < 100 ) count = i; //1~99는 모두 한수
            else if(i == 1000) break; //1000은 한수가 아님
            else {
                int k = 0, t = i;
                while (t > 0) { //일의자리수를 배열에 넣기위한 로직
                a[k] = t % 10;
                t /= 10;
                k++;
            }
            if (a[0] - a[1] == a[1] - a[2]) //공차가 같으면 한수
            count++;
        }
    }

        return count;
    }
}

처음에는 문제 이해를 못하였는데 입력값으로 주어진 수 만큼 예를 들어 110이면 1~110만큼 수 중에
한수 즉 123 같이 각 자리의 수만봤을때 1 2 3 이 1씩증가되있으므로 등차수열에 성립이 된다하여
123은 한수에 포함이 된다.

문제출처