Algorithm/Baekjoon(Node.js)

[JavaSrcipt] Baekjoon - 1065 : 한수

비망노트 2021. 9. 8. 11:06

문제

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

입력

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

출력

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

 

예제입력 예제출력
110 99
1 1
210 105
1000 144

 

 

⭕ 풀이

 

function hansoo(){
    let input=require('fs').readFileSync('/dev/stdin').toString();
    let num = Number(input);
    if(num>99){
        let count = 0;                  
        for(let i=100;i<=num;i++){
            let aa = Math.floor(i/100),
                bb = Math.floor((i%100)/10),
                cc = (i%100)%10;
            let str = String(i).length;
            for(let j=0;j<=str-3;j++){
                if(aa-bb==bb-cc){
                count +=1;
              };
            }
        }return count+99 ;
    }
    else{
        return num ;
    }
}
console.log(hansoo());

function hansoo() {

사용할 함수명을 선언해주고 hansoo함수가 실행될때 입력값을 input으로 받아온다.

그리고 만약 input이 99초과일경우 let i 는 100부터시작해 입력받은 num까지 

첫째자리 - 둘째자리 의 값과 둘째자리 - 셋째자리 의 값이 같을경우에 

count++를 해주며 count+99의 값을 반환하도록했고

99보다 작거나 같을경우에는 입력받은 값을 그대로 반환하도록 했다.

 

1 ~ 99 는 모두 등차수열이다.

1~9는 수가하나인 수열

10~99는 그 수 자체로 수열이므로

입력값이 111이라면 1-1 == 1-1 이니 한수는 100개겠지만

110이라면 99개가 된다.

 

함수를 사용해본적이 없으니..

선언과 호출 자체를 이해하려고 mdn을 보고 또 보고

완전히 이해했다고 할순없지만 어떤식으로 선언하고

파라미터를 활용하는지는 어렴풋하게 이해한것같다.

 

 

✅ 다른분의 풀이

const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
const input = fs.readFileSync(filePath).toString().split('\n');

const N = Number(input[0]);

function solution(number) {
  let count = 0;
  for (let i = 1; i <= number; i++) {
    let hundredN = Math.floor((i % 1000) / 100);
    let tenN = Math.floor((i % 100) / 10);
    let oneN = Math.floor(i % 10);
    if (i < 100) {
      count++;
    } else if (100 <= i && i < 1000) {
      if (hundredN - tenN === tenN - oneN) {
        count++;
      }
    }
  }
  console.log(count);
}

solution(N);

다른 풀이도 많았지만 내 풀이와 비슷해보여서 가져왔다.

이분은 함수선언 밖에서 input을 입력받고 N을 선언하고

함수 선언시 파라미터 number사용했다

solution(N); 실행시 Number(input)값이

number파라미터로 들어가며 해당값을 받아 작동되는것같다.

 

 

 

-출처

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