백준 1748 수 이어 쓰기1 (수학)

bkboy·2022년 5월 20일
0

백준 초급

목록 보기
20/80
post-custom-banner

문제

1부터 N까지의 수를 이어서 쓰면 다음과 같이 새로운 하나의 수를 얻을 수 있다.

1234567891011121314151617181920212223...

이렇게 만들어진 새로운 수는 몇 자리 수일까? 이 수의 자릿수를 구하는 프로그램을 작성하시오.

제한사항

첫째 줄에 N(1 ≤ N ≤ 100,000,000)이 주어진다.

입출력 예

풀이

const input = require('fs').readFileSync('/dev/stdin').toString().trim();
const n = +input;

const solution = (n) => {
    let sum = 0;
    for(let i=1;i<=n; i *= 10){
        sum += n - i + 1;
    }
    return sum;
}

console.log(solution(n));
  • i가 1부터 10의 배수로 뛴다.
  • 문제에 나오는 15를 예를 들어 설명하면 반복문을 돌면서,
    15 - 1 + 1 = 15 -0,
    15 -10 + 9 = 15 -9,
    결과적으로 15 + 15 - 9인데 십의 자리부터는 한 숫자가 두자리이다. 그래서 15를 두번 더하는데 일의 자리는 겹치는 그 갯수인 9를 뺀 것. 그래서 n - i + 1이라는 공식이 나온다.
  • 수학적인 개념이 들어가서 어렵다. 비슷한 유형을 풀 때, 식을 이용하자.
profile
음악하는 개발자
post-custom-banner

0개의 댓글