[Java] 한수

https://www.acmicpc.net/problem/1065

package org.example.한수;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.text.MessageFormat;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) {
        FastReader fr = new FastReader();
        int n = fr.nextInt();
        solution(n); // 99
    }

    private static void solution(int n) {
        int hanCount = 0;
        for (int x = 1; x <= n; x++) {
            Number xNumber = new Number(x);
            if (xNumber.isHanNumber()) {
                hanCount++;
            }
        }
        System.out.println(hanCount);
    }

    public static class Number {
        private final int value;

        public Number(int value) {
            if (!(1 <= value && value <= 1000)) {
                String errorMessage = MessageFormat.format("x => {0}, x 는1000보다 작거나 같은 자연수여야합니다.", value);
                throw new IllegalArgumentException(errorMessage);
            }
            this.value = value;
        }

        public boolean isHanNumber() {
            if (this.value < 100) {
                return true;
            }
            int temp = this.value;
            int firstDigit = temp % 10;
            temp /= 10;
            int secondDigit = temp % 10;
            int diff = firstDigit - secondDigit;

            while (temp >= 10) {
                firstDigit = temp % 10;
                temp /= 10;
                secondDigit = temp % 10;
                int eachDiff = firstDigit - secondDigit;
                if (diff != eachDiff) {
                    return false;
                }
            }
            return true;
        }

    }


    // 유틸성 클래스
    public static class FastReader {
        BufferedReader br;
        StringTokenizer st;

        public FastReader() {
            this.br = new BufferedReader(new InputStreamReader(System.in));
        }

        public String next() {
            while (st == null || !st.hasMoreElements()) {
                try {
                    st = new StringTokenizer(br.readLine());

                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }

        public int nextInt() {
            return Integer.parseInt(next());
        }
    }
}