예를 들어, 입력값이 1234라고 한다면
1000부터 1234까지는 모두 4자리 수기 때문에,
4자릿수 (1234 - 1000 + 1)개를 미리 처리했다.
그리고 나머지는 그 수가 무엇이든, 자릿수에 따라 9 * 1, 9 * 10, 9 * 100 ... 개로 예상을 벗어나지 않기 때문에,
아래는 저렇게 처리했다.
+ 한 자릿수는 따로 처리 해줘야 한다. (한 자릿 수일 경우, 입력 값 그대로 출력하면 된다.)
num = int(input())
len_fir = (num - int('1' + ('0' * (len(str(num)) - 1))) + 1) * len(str(num))
if(len(str(num)) == 1):
print(num)
else:
num = str(num)[1:]
len_aft = 0
for n in range(1, int(len(num)+1)):
len_aft += int('1' + ('0' * (n - 1))) * n
len_fir += len_aft * 9
print(len_fir)
'알고리즘 > 백준' 카테고리의 다른 글
[BOJ] [Python] 1260번 : DFS와 BFS (0) | 2021.04.12 |
---|---|
[BOJ] [Python] 2775번 : 부녀회장이 될테야 (0) | 2021.04.10 |
[BOJ] [Python] 2839번 : 설탕 배달 (0) | 2021.04.09 |
[BOJ] [Python] 1449번 : 수리공 항승 (0) | 2021.03.31 |
[BOJ] [Python] 16953번 : A → B (0) | 2021.03.23 |