https://www.acmicpc.net/problem/1748
N = int(input())
result = 0 # 답
n = len(str(N)) # 글자수 길이
for i in range(n,0,-1):
result += (N-(10**(i-1))+1)*(i)
N = (10**(i-1))-1
print(result)
글자수 길이를 구한 다음에
각 자릿수별로
100의 자리면 숫자가 3, 10의 자리면 길이가 2, 1의 자리면 길이가 1.. 이므로
(각 자리수 숫자들의 개수 * 각 자리수의 길이) 를 더하면 값이 나온다.
ex. 129일 경우 129~100에 해당하는 숫자 길이를 구한 후,
그 다음 자리수로 가게 되면
99 ~ 10, 9~1 이 되므로 N을 999, 99, 9 이런식으로 바꾸게 했다...
ex. 129면 129 - 10^2 + 1 => 30, 100~129에 해당하는 수, 총 30개
각 자리수 숫자들의 개수 = > N - (10^(i-1))+1
각 자리수의 길이 => i
'코딩테스트' 카테고리의 다른 글
[Python] 백준 - 블랙잭 (0) | 2024.05.13 |
---|---|
[Python] 백준 - 영화감독 숌 (0) | 2024.05.10 |
[코딩테스트] 1,2,3 더하기 - Python (0) | 2024.05.03 |
[Python] 마구간 정하기(결정알고리즘) (0) | 2024.04.15 |
[코딩테스트] 뮤직비디오(결정알고리즘) (0) | 2024.04.13 |