본문 바로가기

백준1065 - 한수 JS 본문

개발/algorithm

백준1065 - 한수 JS

자전하는명왕성 2023. 9. 27. 10:08

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

해당 문제는 문제에서 제시한 것처럼 '한수'의 갯수를 출력하는 문제다.

 

여기서 답에 대한 힌트는 예제에서 주어지는데, 

100~110까지의 각 자릿수가 등차수열을 이루는 수는 존재하지 않으므로

100 미만의 모든 수는 한수라고 볼 수 있다.

 

그러므로 100 미만인 n이 주어진 경우 그대로 출력하고,

100 이상인 n이 주어지는 경우, 100부터 n까지의 한수의 수와 99(100 이하의 한수는 99개이므로) 합하여 출력하면 된다.

 

const fs = require('fs')
const input = fs.readFileSync(process.platform === "linux" ? "/dev/stdin":"입력.txt")
  .toString().trim()

// input이 100을 넘는 경우 
const upper100 = (n) => {
  let hansu = 99

  for(let i = 100 ; i <= n ; i ++) {
    const str = String(i)
    // 1. 아래와 같은 표현식은 옵셔널 체이닝 또는 단축평가를 검색
    // 2. 입력값은 1000 이하로 주어지고 1000은 한수에 해당되지 않기 때문에
    // 문자열화한 i의 인덱스로 자릿수에 직접 접근하여 등차수열인지 확인
    str[0] - str[1] === str[1] - str[2] && hansu ++
  }

  return hansu
}

function solution(data) {
  const result = data < 100 
    ? data
    : upper100(data)

  console.log(result)
}

solution(input)

 

Comments