[백준]단계별로 풀어보기 - 6단계.함수 - 1065번 한수 (Java 자바)

728x90
반응형

단계별로 풀어보기 - [6단계.함수] - 1065번 한수

문제


문제링크

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

 

1065번: 한수

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

www.acmicpc.net

 

풀이


1~99까지는 모두 등차수열이다. 

  • 1~9: 수 하나가 그 자체로 수열
  • 10~99: 모두 등차수열

∴ 검사해야 하는 수는 100~1000이다.

 

따라서 (1)100보다 작은 수, (2)100보다 큰 수 로 경우를 나누어서 개수를 세면 된다.

 

i라는 정수가 있을 때 각 자리숫자를 구하는 방법

  • 백의 자리 수 = i / 100
  • 십의 자리 수 = (i / 10) % 10
  • 일의 자리 수 = i / 10

CODE

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        System.out.println(hansu(n));
        scanner.close();
    }

    public static int hansu(int n) {
        int cnt = 0; // 한수 카운팅

        if (n < 100) {
            return n;
        }
        else {
            cnt = 99;
            if (n == 1000) {    // 예외처리 필수
                n = 999;
            }
        }

        for (int i = 100; i <= n; i++) {
            int hun = i / 100;
            int ten = (i / 10) % 10;
            int one = i % 10;

            if ((hun - ten) == (ten - one))
                cnt++;
        }
        return cnt;
    }
}
728x90
반응형