본문 바로가기
알고리즘/백준

백준 1065번 한수 자바 java

by 클로드 2021. 4. 12.
반응형

문제

 

풀이

 

정수의 각 자리 수가 등차수열로 이루어지면 한수

예) 1 ~ 99, 111 (0), 123 (1), 135 (2), 147 (3), 159 (4), 210 (1)....

1 ~ 99 까지는 한수를 더해주고 세 자리 숫자부터 함수를 만들어서 처리를 함

첫째 자릿수와 둘째 자릿수를 계산을 해서 증감 값을 찾아내고

그다음 셋째 자리 수와 둘째 자리 수를 비교해서 한수 값을 찾아내는 것으로 해결을 하였다

 

코드

import java.util.Scanner;

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

        //한자리, 두자리 수는 모두 한수
        if (N < 100) {
            System.out.println(N);
            return;
        }

        int count = 99;

        for (int i = 100; i <= N; i++) {
            if (generator(i)) {
                count++;
            }
        }

        System.out.println(count);
    }

    public static boolean generator(int n) {
        //둘째자리와 첫째자리를 비교해서 증감값
        int cal = n / 10 % 10 - n % 10;
        int compare = n / 10 % 10;

        //세번재 자리부터 비교
        n /= 100;
        while (n != 0) {
            if (n != compare + cal) {
                return false;
            }
            compare = n;
            n /= 10;
        }

        return true;
    }
}

 

출처

www.acmicpc.net/problem/1065

반응형

댓글