/*
문제 : 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.
입력 : 첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.
출력 : 첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.
*/
// 답안
let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().trim().split(' ');
let num = Number(input);
// let num = Number(1000);
function hansooCheck(num){
let hansoo = 0;
for(let i=1; i <= num; i++){
if(i < 100){
hansoo ++;
}else{
const numArr = i.toString().split('').map(num => +num);
console.log(numArr);
if(numArr[0] - numArr[1] === numArr[1] - numArr[2]){
hansoo ++;
}
}
}
console.log(hansoo);
}
hansooCheck(num);
💡 마치며
한수라는 개념을 이해하지 못해서 애를 먹은 문제..
예제 입력과 출력을 보면 100보다 작은 숫자는 모두 한수였다. 그렇다면 100보다 크고 1000보다 작은 숫자 내에서[0] - [1] === [1] - [2]
이 성립하면 한수가 된다.