1065 한수 [함수/Silver 4]

최유연·2021년 9월 5일
0

📋 문제 :

1065 한수

💡 풀이 설명 :

1보다 크거나 같고 N보다 작거나 같은 한수의 개수를 구해야한다. 이때 한수는 양의 정수 X의 각 자리가 등차수열을 이루는 수이다.
case를 나눠보자면, 99이하의 수는 무조건 한수이다.
따라서 99이하의 수가 입력으로 주어지면 그대로 출력하면 되고,
100 이상의 수가 입력되면 100~input까지의 수를 한수인지 확인한 후 99를 더해줘서 출력하면 된다.

💻 코드 :

python

if __name__ == '__main__':
    def is_arithmetic_sequence(n):
        N = [int(i) for i in str(n)]
        if N[0]-N[1] == N[1]-N[2]:
            return True
        else:
            return False

    N = int(input())

    cnt = 0
    if N<100:
        print(N)
    else:
        for i in range(100, N+1):
            if is_arithmetic_sequence(i):
                cnt += 1
        print(99+cnt)

java

import java.util.Scanner;
import java.util.stream.Stream;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int cnt = 0;
        if(N<100)
            System.out.println(N);
        else {
            for (int i = 100; i < N + 1; i++) {
                if (is_arithmetic_sequence(i))
                    cnt += 1;
            }
            System.out.println(99 + cnt);
        }
    }
    public static boolean is_arithmetic_sequence(int n){
        int[] digits = Stream.of(String.valueOf(n).split("")).mapToInt(Integer::parseInt).toArray();
        if(digits[0]-digits[1] == digits[1]-digits[2])
            return true;
        else
            return false;
    }
}
profile
프론트엔드 도메인 지식을 지닌 백엔드 개발자로 성장하기 위한 기록

0개의 댓글