풀이


각 자릿수의 숫자마다 1의 자릿수는 1의 길이, 2의 자릿수는 2의 길이, 3의 자릿수는 3의 길이… 를 가진다.

배열에 각 자릿수의 갯수를 저장하고 주어진 정수에 따라 자릿수의 갯수와 인덱스를 곱하여 정답에 더해준다.

소스코드


import sys
 
input = sys.stdin.readline
 
nine = [0, 9, 90, 900, 9000, 90000, 900000, 9000000, 90000000, 100000001]
ans = 0
n = int(input())
 
for i in range(1, 10):
    if n - nine[i] < 0:
        ans += n * i
        break
    else:
        ans += nine[i] * i
        n -= nine[i]
 
print(ans)

References