[백준] 1748번: 수 이어 쓰기 1

그린·2023년 10월 31일
0

백준

목록 보기
44/44
post-thumbnail

[백준] 1748번: 수 이어 쓰기 1


✔️문제

문제 설명

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

1234567891011121314151617181920212223...

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

입력

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

출력

첫째 줄에 새로운 수의 자릿수를 출력한다.


✔️풀이

import sys
input = sys.stdin.readline

n = int(input())
r = 0
answer = 0

m = n
while n>0:
  n = n//10
  r += 1


for i in range(1, r+1):
  answer += i*9*(10**(i-1))

answer -= (10**r-1-m)*r
print(answer)
  1. while문으로 입력받은 n의 자릿수(r)를 계산해준다.
  2. 구한 자릿수의 최대 숫자를 입력받았을 때의 자릿수를 계산해준다.
    i 자릿수일 때, 910i19*10^{i-1} 만큼 늘어난다.
  3. 15를 입력받은 경우, 99까지 이어 쓴 숫자의 자릿수를 구했으므로 16부터 99만큼의 길이를 빼준다. 각 자릿수의 최대 숫자를 구하고 10r110^r-1, 추가로 더해진 길이를 빼준다.

0개의 댓글