한수 (1065번) [node.js, JavaScript]

한수 (1065번) [node.js, JavaScript]

한수 (1065번) [node.js, JavaScript]

문제 설명

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

입력

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

출력

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

문제설명

"등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다." 이 문제에서는 1부터 99까지 숫자는 각자릿수의 숫자 차이가 하나뿐이므로 일정한 수열로 인정됩니다.

그럼 1자리 수와 10의자리 수는 연속된 수의 차이가 나오지 않는데 그런 숫자는한수로 인정되는가가 문제다. 예제출력 1를 보면 1~ 99의 숫자 모두 인정된다는 걸 알 수 있다.

한수로 인정되는 조건을 바로 생각해보면 123, 135, 147, 159 같은게 한수일 것 이다. 111, 222, 333은 어떨까? 차이가 0인 것도 서로 똑같으니 일정한 차이라고 볼 수 있다.

Code

const input = require("fs").readFileSync("/dev/stdin").toString().split("

"); const N = +input[0]; let count = 0; for (let i = 1; i <= N; i++){ let numStr = String(i); if (i < 100) { count++; } else { if (Number(numStr[0]) - Number(numStr[1]) === Number(numStr[1]) - Number(numStr[2])) { count++; } } } console.log(count)

from http://jinblog123.tistory.com/217 by ccl(A) rewrite - 2021-11-17 18:01:35