본문 바로가기
코딩테스트

[Python] 백준 - 수 이어쓰기 1

by 박매트 2024. 5. 9.

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