https://www.acmicpc.net/problem/1065
한수를 체크하는 함수를 별도로 생성했고 주어진 숫자만큼 반복하면서 한수의 개수를 체크했다.
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
let input;
rl.on('line', function (line) {
input = line;
// 한수 체크 함수
// 한수면 true, 아니라면 false를 return 한다.
function check(n) {
// 숫자를 쪼개서 배열로 저장
// ex) 123 => [1,2,3]
const numArr = String(n).split('');
// 숫자 자리수 체크
// 숫자 배열의 길이가 자리수를 의미한다.
// 2자리 이하 숫자는 모두 한수이다.
if (numArr.length <= 2) {
return true;
}
let diff = 0;
// 123같은 세자리 숫자면 12, 23 이렇게 두번만 비교하면 되므로
// 숫자 자리수 - 1 번 반복하면서 등차수열인지 체크한다.
for (let i = 0; i < numArr.length - 1; i++) {
if (i === 0) {
diff = numArr[i] - numArr[i + 1];
} else {
if (diff !== numArr[i] - numArr[i + 1]) {
return false;
}
}
}
return true;
}
let count = 0;
for (let i = 1; i <= input; i++) {
if (check(i)) {
count++;
}
}
console.log(count);
rl.close();
}).on('close', function () {
process.exit();
});