[JS] 1065번 - 한수

박세현·2021년 6월 2일
0

알고리즘

목록 보기
10/19

한수

문제 출처

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


풀이

한수를 체크하는 함수를 별도로 생성했고 주어진 숫자만큼 반복하면서 한수의 개수를 체크했다.

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

let input;

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

  // 한수 체크 함수
  // 한수면 true, 아니라면 false를 return 한다.
  function check(n) {
    // 숫자를 쪼개서 배열로 저장
    // ex) 123 => [1,2,3]
    const numArr = String(n).split('');
	
    // 숫자 자리수 체크
    // 숫자 배열의 길이가 자리수를 의미한다.
    // 2자리 이하 숫자는 모두 한수이다.
    if (numArr.length <= 2) {
      return true;
    }

    let diff = 0;
    // 123같은 세자리 숫자면 12, 23 이렇게 두번만 비교하면 되므로
    // 숫자 자리수 - 1 번 반복하면서 등차수열인지 체크한다.
    for (let i = 0; i < numArr.length - 1; i++) {
      if (i === 0) {
        diff = numArr[i] - numArr[i + 1];
      } else {
        if (diff !== numArr[i] - numArr[i + 1]) {
          return false;
        }
      }
    }

    return true;
  }

  let count = 0;
  for (let i = 1; i <= input; i++) {
    if (check(i)) {
      count++;
    }
  }

  console.log(count);

  rl.close();
}).on('close', function () {
  process.exit();
});

profile
Front End 공부노트

0개의 댓글

관련 채용 정보