[js] 백준 1065번 한수
업데이트:
🔍 문제
어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.
⚪ 입력
첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.
⚪ 출력
첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.
📝 정답 코드
const fs = require('fs')
let input = fs.readFileSync('/dev/stdin');
let count = 0
function d(data){
const str = data.toString()
const arr = Array.from(str)
if(data<100 | arr[2]-arr[1] == arr[1]-arr[0]){
return true
}
}
for (let i=1; i<=input; ++i){
if (d(i)){
count++;
}
}
console.log(count)
CODE REVIEW 💻
💡 등차수열
- 대표 점화식 : F(n) = F(n-1) + a
👩🏻🏫 코드 설명
입력이 1000보다 작거나 같은 자연수이다. 100보다 작은 수는 무조건 등차수열이다.
우리는 100보다 크고 1000보다 작은 자연수 중 각 자리수가 등차수열을 이루는 숫자를 찾아주면 된다.
함수 d(data)에서 100보다 작은 수는 모두 등차수열로 치고 true를 반환하였다.
또한 100보다 크고 1000보다 작은 수 중에서 arr[1]-arr[0]과 arr[2]-arr[1]이 같으면, 즉 위 점화식에서 a가 같으면 true를 반환했다.
true일 때 count를 증가시키고 console.log(count)를 해주면 끝!
댓글남기기