백준

백준 1065 한수(Java)

Park DJ 2023. 1. 24. 22:40

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

 

1065번: 한수

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

www.acmicpc.net


 

해석 및 팁

 


 

이 문제에서 한수는 각 자릿수가 등차수열을 이루는 수를 의미합니다. 따라서 100 미만인수는 모두 한수입니다. n의 범위가 1000 이하이므로 n = 1000 일경우에는 예외로 144를 출력해 주고 100 이상 999 이하인 경우에는 각 자릿수를 비교해서 한수인지 아닌지 판단하여 count++을 해주면 됩니다.

 


 

Java 코드

 


import java.util.Scanner;

public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);

    int n = sc.nextInt();
    int[] arr = new int[3];
    int count = 0;

    if(n == 1000) count = 144;          //1000이면 144 출력
    else if(n < 100) count = n;         //100 미만은 모두 한수
    else if(n <= 999) {
      count = 99;
      for(int i = 100; i <= n; i++) {
        arr[0] = i % 10;
        arr[1] = (i / 10) % 10;
        arr[2] = i / 100;
        if((arr[2] - arr[1]) == (arr[1] - arr[0])) count++;    //각 자리별 비교
      }
    }
    
    System.out.println(count);
  }
}