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;
}
}