Algorithm/BOJ

[Algorithm / BOJ] 01748 : 수 이어쓰기 1.py

Gaeun Lee 2022. 7. 16. 07:36

문제

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

1234567891011121314151617181920212223...

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

 

입력

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

출력

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

 

내 풀이

문자열의 길이를 구하는 방법으로 풀었는데 시간 초과가 떠서 직접 계산하는 코드로 작성하였다

n = int(input())
result = 0
n_len = len(str(n))

if n_len == 1 :
    result = 1 * n

else :
    for i in range(1,n_len+1):
        if i == 1:
            result += 9
        else:
            result += ((10 ** i) - 10 ** (i-1)) * i
    result -= ((10 ** n_len - 1) - n ) * n_len

print(result)