각 자릿수가 등차수열을 이루는 숫자를 한수라고 부른다고 한다.
예를 들어 123이 있을 수 있다. 백의 자릿수 1과 십의 자릿수 2의 차이는 1, 십의 자릿수 2와 일의 자릿수 3의 차이는 1로 길이가 3이고 차가 1인 등차수열이라고 할 수 있다.
문제에서 주어진 조건으로 입력은 1~1000까지 가능하고, 2초의 시간이 주어진다.
처음으로 생각할 수 있었던 것은 일단 1000은 등차수열이 아니기 때문에 결국 1에서 999까지 숫자들만 가지고 생각하면 된다는 것이다.
두번째는 1 ~ 99까지는 모두 등차수열이라고 볼 수 있다. 그래서 두자리수 입력이 들어온다면 그 숫자를 그대로 반환하면 답이 된다.
예를 들어 30을 입력하면 답은 "30" 이다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Alogrithm {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();
int N = Integer.parseInt(input);
int len = input.length();
int result = 0;
// 2자리 수 까지는 전부 등차수열이 가능 그래서 1~99까지는 전부 한수
if (len <= 2) {
result = N;
} else {
result += 99;
int i;
for (i = 100; i <= N; i++) {
int hun = i / 100;
int ten = (i % 100) / 10;
int one = i % 10;
if (hun - ten == ten - one) {
result += 1;
}
}
}
System.out.print(result);
br.close();
}
}