BJ - 한수

Goody·2021년 2월 9일
0

알고리즘

목록 보기
36/122

문제

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

  • 입력
    첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.

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

예시

INPUT_1

110

OUTPUT_1

99

INPUT_2

210

OUTPUT_2

105

풀이

  • 주어진 숫자의 각 자릿수의 차가 같은지 검사하는 문제이다.
  • 100 미만의 숫자는 자릿수가 2 자리 뿐이므로 무조건 참이다.
  • 100 이상의 숫자에 대해서만 각 자릿수를 나눈다.
  • (100의 자릿수 - 10의 자릿수) === (10의 자릿수 - 1의 자릿수) 인지 검사한다.
  • 참이면 미리 99로 정해둔 한수를 1씩 증가시킨다.

코드

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

const input = [];


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


}).on("close", function () {
    const num = Number(input[0]);
  
    if(num < 100) {
        console.log(num);
    } 
  
    if(num >= 100) {
        let hansu = 99;
        for(let i = 100; i <= num; i++) {
            const str = i + "";
            const arr = str.split("");
            if((arr[0] - arr[1]) === (arr[1] - arr[2])) {
                hansu++;
            }
        }
        console.log(hansu);
    }
    process.exit();
})

0개의 댓글