YoungSoo

백준 - 한수(1065 Java 풀이) 본문

코딩테스트

백준 - 한수(1065 Java 풀이)

YoungSooSoo 2022. 11. 5. 22:48

이번 문제에서는 1보다 크고 입력 값 N보다 작은 한수의 수를 구하는 문제이다.

여기서 한수란 주어진 숫자의 각 자리 간의 등차 수열이 이루어지는 것을 말한다.

 

코드

import java.util.Scanner;


public class Main {
    public static int d(int n){
        int count = 0;

        if(n < 100){
            return n;
        }else{
            count = 99;

            int a = 0;
            int b = 0;
            int c = 0;

            for(int i=100; i<=n; i++){
                a = i/100;  //백의 자리
                b = i/10 - a*10;      //십의 자리
                c = i - a*100 - b*10;      //일의 자리
                if(((a-b) == (b-c)) || ((b-a) == (c-b))){
                    count++;
                }
            }

            return count;
        }
    }

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

        int N = sc.nextInt();

        int count = d(N);
        System.out.println(count);
    }
}

풀이

1. 메인 함수에서 1000보다 작거나 같은 값 N의 값을 받고 한수를 구하는 함수를 호출해준 뒤 그 값을 출력해준다.

2. 먼저 세어줄 변수를 선언해주고 100보다 작은 값은 한수가 값과 똑같기 때문에 N을 출력해준다.

3. 100보다 크거나 같은 수는 각 자리의 수를 구해 비교를 통해 coun를 세어주는데 여기서 100보다 작은 수는 99개의 

    한수가 나오기 때문에 count에 99를 넣어준다.