본문 바로가기
백준

[BOJ] 백준 1065번: 한수

by 너츠너츠 2022. 1. 6.

문제

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

풀이

이 문제는 각 수를 String으로 변환하여 길이를 얻고 각 자리별로 숫자를 비교해주면 되는 문제입니다.

코드

import java.util.*;

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

        for(int i=1; i<=N; i++)
            if(isHanSoo(i)) ans +=1;

        System.out.println(ans);
    }

    private static boolean isHanSoo(int num) {
        String str = Integer.toString(num);
        if(str.length() <= 2) return true;

        int diff = str.charAt(1) - str.charAt(0);

        for(int i=2;i<str.length();i++)
            if(diff != str.charAt(i) - str.charAt(i-1)) return false;

        return true;
    }
}

 

<출처>

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

반응형

댓글