어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.
const input = require('fs').readFileSync('/dev/stdin').toString();
const isHanNumber = (n) => {
if (n < 100) {
return true;
}
const str = String(n);
const d = +str[0] - +str[1]
for (let i = 1; i < str.length - 1; i++) {
if ((+str[i] - +str[i+1]) !== d) {
return false;
}
}
return true;
}
const N = Number(input);
let result = 0;
for (let i = 1; i <= N; i++) {
if (isHanNumber(i)) {
result += 1;
}
}
console.log(result);
const input = require('fs').readFileSync('/dev/stdin').toString();
const isHanNumber = (n) => {
if (n < 100) {
return true;
}
const s = String(n);
return (+s[0] - +s[1]) === (+s[1] - +s[2]);
}
const N = Number(input);
let result = 0;
for (let i = 1; i <= N; i++) {
if (isHanNumber(i)) {
result += 1;
}
}
console.log(result);
입력 조건이 1,000보다 작거나 같은 자연수 N이므로 세 자리인 수만 생각하면 된다는 것을 조금 나중에 깨달았다. 1~99는 무조건 한수이므로 각 자릿수를 숫자로 표현했을 때 1-2 === 2-3이 참이라면 한수가 된다.