Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

지극히 개인적인 개발블로그

백준 알고리즘 1065: 한수(java) 본문

알고리즘

백준 알고리즘 1065: 한수(java)

코드분쇄기 2019. 9. 22. 22:37

좀 어려운 문제였습니다. 틀리기도 엄청 틀렸던거 같네요.

한수의 개념자체를 쉽게 이해하지 못했습니다. 

첫번째 예제에서 힌트를 주고 있습니다. 110이하의 세자리수에서는 한수가 없습니다. 그런데 110을 입력하면 99가 나옵니다. 100미만의 수는 전부 한수로 인정한다는 의미입니다.

100이상의 수를 판별하는지는 크게 어렵지 않았습니다. 등차수열의 기본법칙인

n2 * 2 = n1 + n3인지만 확인하면 됩니다. 이하는 코드입니다.

import java.util.Scanner;

public class Sol_1065 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int hanChk = 0;

        if(n < 100)
            System.out.println(n);
        else
        {
            hanChk = 99;
            for(int i=100; i<=n; i++)
            {
                if(Hansu(i) == true)
                    hanChk++;
            }
            if(n == 1000)
                hanChk--;
            System.out.println(hanChk);
        }
    }

    private static boolean Hansu(int n){
        int n1 = n / 100 % 10;      //100의 자리수
        int n2 = n / 10 % 10;       //10의 자리수
        int n3 = n % 10;            //1의 자리수

        if(n2 * 2 == n1 + n3)
            return true;
        else
            return false;
    }
}