함수(1065)

문제

어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.

출력

첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.

예제

입력 - 출력

110 - 99
1 - 1
210 - 105
1000 - 144

한번에 정답입니다가 뜨면 정말 기분이 좋다 ㅎㅎㅎ

한수 : 어떤 양의 정수 X의 각 자리가 등차수열을 이루는 수

  • 2자리 수 이하의 수는 모두 한수로 친다

따라서 1000 이하의 수만 계산하기 때문에 세자리 수만 한수인지 판별하면 된다.

const readline = require('readline');
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdin
});

let input = [];

rl.on('line', function (line){
    input.push(line);

}).on('close',function (){

    let N = input[0];
    let count = 0;

    for (let i = 1; i<=N; i++){
        if (i<100){
            count ++;
        }
        else if (i >= 100 && Math.floor(i/100) - Math.floor(Math.floor(i/10)%10) === Math.floor(Math.floor(i/10)%10) - Math.floor(i%10) ){
            count++;
        }
    }

    console.log(count)
    process.exit();
});

계산식을 더 정리할 수 있을거 같은데 더 고민해봐야 겠다.

profile
코더가 말고 개발자가 되고싶은...

0개의 댓글