😎풀이

  1. n번째 자릿수가 속하는 범위를 우선적으로 추림
    1-1. 1~9의 경우 9개의 숫자가 한 자릿수로 총 9개의 자리를 차지함
    1-2. 10~99의 경우 90개의 숫자가 두 자릿수로 총 2 * 90 총 180개의 자리를 차지함
    1-3. ...
  2. 최종적으로 N의 범위인가를 판단한 후, 특정 번째의 숫자를 문자열 형태로 변환하여 자릿수 반환
function findNthDigit(n: number): number {
    let len = 1
    let start = 1
    let rangeCount = 9
    while(n > len * rangeCount) {
        n -= len * rangeCount
        len++
        start *= 10
        rangeCount *= 10
    }
    const target = start + Math.floor((n - 1) / len)
    const strTarget = String(target)
    const digit = strTarget[(n - 1) % len]
    return Number(digit)
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글