본문 바로가기
Problem Solving/boj.kr (JS)

[BOJ / 자바스크립트] 1065 : 한수

by hoiiiii 2022. 2. 13.

문제 : https://www.acmicpc.net/problem/1065

 

1065번: 한수

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

www.acmicpc.net

 

Sol ) 

1. 100 이하의 수는 모두 한수이므로 즉시 리턴

2. 100이상의 경우 일의자리와 십의자리의 차이 값을 기록한다. (dif 변수)

3. n을 10으로 나눠가면서 십의 자리수와 일의 자리수를 계속 비교

4. 십의 자리와 일의 자리의 차이값이 dif 값과 다르면 false

5. n의 모든 자릿수의 차이가 같으면 true 리턴

 

소스코드 )

//

const fs = require('fs');
const n = Number(fs.readFileSync('/dev/stdin'));
let cnt = 0;
let solution = function(n){
    if (n<100){
        return true;
    }
    let prev = n%10;
    n = parseInt(n/10);
    let dif = prev-n%10;
    while (n){
        if ((prev-n%10) !== dif){
            return false;
        }
        prev = n%10;
        n = parseInt(n/10);
    }
    return true;
}
for (let i = 1; i<=n ; i++){
    if(solution(i)){
        cnt++;
    }
}
console.log(cnt);

 

댓글